Methods and systems for data-focused debugging and tracing capabilities

ABSTRACT

Embodiments of methods and systems consistent with the present invention enable data-focused analysis of an application by reorganizing execution information generated by an application into categories associated with the data objects used by the application, and displaying or otherwise using the reorganized information for analysis, debugging, execution tracing, etc. of the application. Thus, the application execution information is presented from the data standpoint instead of from the execution sequence standpoint.

RELATED APPLICATION

This application is a continuation-in-part of U.S. patent applicationSer. No. 11/111,794, entitled “Systems and Methods for Modeling andManipulating a Table-Driven Business Application in an Object-OrientedEnvironment,” filed Apr. 22, 2005, which is incorporated herein byreference.

BACKGROUND

1. Relevant Field

The present inventions generally relate to business applicationsoftware. More particularly, the inventions relate to systems, methodsand computer readable media for modeling of business applications andthe use of a model to create, improve, and maintain a businessapplication.

2. Background Information

One drawback with legacy business application systems stems from howbusiness data and rules are often contained in physically separate tabledata structures, with little user-friendly representation of theorganization or relationships of those structures. Such table-drivensystems are difficult to work with. For example, a business object maybe defined across ten or more different database tables that are noteasily accessed, displayed, or understood together.

Furthermore, as shown in the example of FIG. 3A, a table-driven businessapplication typically stores its configuration data 305 and its rules310 in multiple, physically separate tables. Considered statically,there is no obvious or easily determined relationship or connection 315between configuration data 305 and rules 310. At runtime, however,configuration data 305 and rules 310 interrelate 320 because theconfiguration data 305 and the rules 310 affect each other. For example,some configuration data 305, may affect the execution of rules 310. Thephysical separation between related data and between data and rules, thelack of static indications of runtime interactions between data andrules, and other factors make the data and processes of a businessapplication difficult to understand, difficult to create, difficult todebug, and difficult to modify without causing unexpected effects.

In view of the foregoing, it is desirable to take business applicationstructures and translate them into user-friendly objects that can bemore easily understood, manipulated, debugged, designed, redesigned,analyzed, and/or modified.

SUMMARY

Consistent with embodiments of the present inventions, systems andmethods are disclosed for presenting business application executioninformation. Embodiments and methods consistent with the inventionexecute the business application; create an execution log containinginformation regarding operations and data of the business application inexecution sequence order; identify a set of objects used by the businessapplication; organize the information in the execution log according tothe set of objects; and present the organized information according tothe set of objects.

It is to be understood that both the foregoing general description andthe following detailed description are exemplary and explanatory only,and should not be considered restrictive of the scope of the invention,as described and claimed. Further, features and/or variations may beprovided in addition to those set forth herein. For example, embodimentsof the invention may be directed to various combinations andsub-combinations of the features described in the detailed description.

BRIEF DESCRIPTION OF THE DRAWINGS

The accompanying drawings, which are incorporated in and constitute apart of this disclosure, illustrate various embodiments and aspects ofthe present invention. In the drawings:

FIGS. 1 to 3B illustrate exemplary business structures of a businessapplication;

FIG. 4A illustrates a flowchart illustrating an overview of an exemplaryprocess 400 for creating an off-line model of a business application,consistent with the present invention;

FIG. 4B is an exemplary illustration 440 of the various processing toolsconsistent with the invention;

FIGS. 5, 6A, and 6B illustrate exemplary processes consistent with thepresent invention;

FIG. 7A illustrate an exemplary processes consistent with the presentinvention;

FIG. 7B illustrates an exemplary OOP structure consistent with theinvention;

FIG. 7C illustrates a block diagram of an exemplary architectureconsistent with an embodiment of the invention;

FIG. 8 illustrates an exemplary processes consistent with the presentinvention;

FIGS. 9 to 15 illustrate exemplary processing tool operations consistentwith the present invention;

FIG. 16 illustrates an exemplary process consistent with the invention;

FIGS. 17 to 67 illustrate exemplary user interface displays consistentwith the present invention; and

FIGS. 68 to 74 illustrate exemplary processes consistent with thepresent invention.

DETAILED DESCRIPTION

The following detailed description refers to the accompanying drawings.Wherever possible, the same reference numbers are used in the drawingsand the following description to refer to the same or similar parts.While several exemplary embodiments and features of the invention aredescribed herein, modifications, adaptations and other implementationsare possible, without departing from the spirit and scope of theinvention. For example, substitutions, additions or modifications may bemade to the components illustrated in the drawings, and the exemplarymethods described herein may be modified by substituting, reordering, oradding steps to the disclosed methods. Accordingly, the followingdetailed description does not limit the invention. Instead, the properscope of the invention is defined by the appended claims.

Overview

Systems and methods consistent with the invention generally relate tobusiness application software. Exemplary business applications includethose offered by SAP, built around the SAP R/3™ (hereinafter referred toas “R/3”) system. These business applications may provide the capabilityto manage financial asset and cost accounting, as well as productionoperations and materials, personnel, plants, and archived documents. TheR/3 system runs on a number of platforms including WINDOWS 2000™ anduses the client/server model. The R/3 system is a comprehensive set ofintegrated business applications. R/3 provides the ability to store,retrieve, analyze, and process corporate data used for financialanalysis, production operation, human resource management, and otherbusiness processes. At one level, an R/3 system (or other legacybusiness application system) may be thought of as a collection of legacybusiness structures or business objects held primarily in databases (astables) that are manipulated by business processes or workflows.

For example, as shown in FIG. 1A, an exemplary business structureincludes configuration data 100, which may be one or more business dataobjects containing data used by a business process. Configuration data100 may include several data fields called attributes, such as“attribute 1” 105 through “attribute n” 120. For example, configurationdata 100 may include data such as an employee's name, an hourly wagerate, and indicators for directing processing of data for the employee.Exemplary business structures also include business rules, such as rule125, which are typically made up of multiple operations, such as“operation 1” 130 through “operation n” 140. Rule 125 may reflect aseries of operations that when executed will, for example, ceasededucting social security payments after an employee's cumulative salaryreaches a specified amount.

In systems such as R/3, configuration data and rules control thebusiness application software. As shown in FIG. 2A, in an exemplarypayroll processing business application, the business structures mayinclude a wagetype 200, which may be a business data object containingconfiguration data used to configure portions of a paycheck. For payrollprocessing purposes, each employee may have associated with him or herone or more wagetype structures containing data about the employee thatis used to perform the payroll functions. For example, an employee mayhave a wagetype for hourly rate, a wagetype for union fees, a wagetypefor deductions, etc. Each wagetype may include one or more attributes205 that act as configuration elements, shown as attributes A-H. Theattributes themselves may be of different types. For example, as shown,attributes A-C may be processing class attributes, which control theprocessing path used by the business application when performingprocessing (rules) for the employee. Attributes D-F may be cumulationattributes, which identify wage types that relate to one another and areprocessed together in some instances. Attributes G and H may beevaluation class attributes, which control processing paths likeprocessing class attributes, but for different rules. A wage type 200may include other types of attributes 205, as well.

As shown in FIG. 2B, as one of its functions, an exemplary payrollprocessing application 215 takes employee data 210 as input and producesa paycheck 220 as output. At runtime, each employee record is processedbased on the employee's data 210 to produce the employee's paycheck 220.

FIG. 2C illustrates the exemplary process of FIG. 2B in greater detail.As shown in this example, employee data 210 is contained in theemployee's wagetype(s) 200 or in one or more similarly organized datastructures. These data structures contain the data used by, and tocontrol, process 215 that calculates and produces a paycheck 220.

More specifically, employee data 210 from the employee wage type 200 maybe used by a workflow or schema that implements payroll process 215. Inthe example shown, the first function of payroll process 215 may be the“HRS×RATE” function 225, which may multiply the employee's hours workedby the employee's hourly wage rate. The data specifying the hours andhourly rate may be derived from the employee's wage type 200. As shownin this example, information regarding how to perform the “HRS×RATE”function 225 is specified by a rule(s) 226 (rule “A” in FIG. 2C)associated with function 225. The functioning of the rule(s) 226, andthus the functioning of the “HRS×RATE” function 225, may be affected byattributes 205 contained in the employee's wage type 200. For example,as shown in FIG. 2A, a processing class attribute 205, such as attributeA, may have “L” selected for this employee and “R” unselected. Selecting“L” may cause rule(s) 226 associated with the “HRS×RATE” function 225 tocalculate the product in a different manner than if “R” were selectedfor attribute A. For example, “L” may cause the hourly rate to increaseby 1.5 for hours greater than 40, such that the employee gets paid timeand a half for overtime beyond 40 hours, while “R” would not use anhourly rate increase, for an employee who is not eligible for increasedovertime pay.

As shown in FIG. 2C, the next function to be performed in the workflowmay be either the “ADD BONUS” function 230 or the “SUBTRACT TAXES”function 235. Typically, data from the employee's wage type 200 willindicate whether the employee is to receive a bonus and control theworkflow to determine which of the two functions is performed next. Asexplained with respect to the “HRS×RATE” function 225, the rulesassociated with the “ADD BONUS” function 230 or the “SUBTRACT TAXES”function 235 (rules “B” and “C,” respectively, of FIG. 2C) determine howthose functions are performed, and attributes 205 from the employee'swage type 200 may affect the functioning of the rules.

Similarly, the “SUBTRACT DEDUCTIONS” function 240, “SUBTRACT ALIMONY”function 245, and “CUMULATE” function 250 are performed as theillustrated workflow progresses, and the rules associated with eachfunction may be similarly affected by the corresponding attributes 205in the employee's wage type 200. As shown in FIG. 2C, rules “D,” “E,”and “F” correspond to functions 240, 245, and 250, respectively. Afterall the workflow functions are completed, the payroll process shownproduces a paycheck 220 for the employee reflecting the results of theoperations carried out by the various functions.

Other business applications, such as financial applications, assetaccounting applications, cost accounting applications, productionoperations applications, etc., use business structures and workflowscomparable to the payroll processing application illustrated in FIGS.2A-2C.

FIG. 3B illustrates an exemplary business system architecture to whichembodiments of the invention may be applied. As shown, a business system330, such as an SAP R/3 system, may include several businessapplications, such as business application A 340, business application B350, and business application C 360. A business application, may be, forexample, a payroll application that calculates the payroll for acompany, generates paychecks or payslips for each employee, etc.; ahuman resources application that manages employee data, adds newemployee records, deactivates retired employee records, etc.; or someother type of business application.

A typical legacy business application, such as a payroll applicationexemplified in this example by business application A 340, istable-driven. In other words, the data which controls execution of theapplication is contained in database tables. The application is designedto read and traverse the tables and execute business functions orprocesses according to the contents of the database tables. Multipleapplications run on the same physical hardware and from data containedin the same relational database(s).

At a high level, payroll business application A 340 may be thought of asconsisting of basically three major logical parts: (1) a data dictionary342 that describes all the tables related to the application, (in thiscase payroll), (2) source code 344 that is the driver of the businessprocesses within the business application, and (3) configuration data346 that control the operation of the business processes within thebusiness application. Each application in business system 330, such asbusiness application B 350 and business application C 360, typically hasits own data dictionary, source code, and configuration data.Configuration data is typically very application specific, while somedata dictionary business objects and some source code may be sharedamong business applications.

Data dictionary 342 contains information about the business that is usedby the business application, such as information about the employeesused by the payroll application, for example, information regarding whena new employee joined the company. Configuration data 346 containsinformation controlling the operation of business application A 340 andis typically stored in database tables accessible to users who cancustomize the payroll application for their business needs by modifyingconfiguration data 346. Some embodiments consistent with the inventionfocus on modeling configuration data 346, which controls the operationof business application source code 344, such as the payroll driver.

In one embodiment, configuration data 346 may be logically modeled byseveral major business objects. For example, an SAP R/3 business systempayroll application may be modeled as major business objects such aswagetypes, schemas, and rules. Further, major business objects may belogically modeled as containing one or more sub-objects such asprocessing class, evaluation class, and cumulations, for an R/3wagetype. The configuration data in the modeled objects describes howthe business application is configured for a specific user, such as aspecific company.

Source code 344 represents a driver for the business processes withinthe business application. The application source code driver of thebusiness application is essentially just a framework that needs theconfiguration data to tell it how to operate. Without the configurationdata to tell it how to work, the source code cannot work meaningfully.The source code driver 344 knows how to execute any schema, which ispart of configuration data 346, and a schema is required to run anapplication; e.g., a payroll schema is required to run a payrollbusiness application.

Payroll driver 344 knows how to read a schema table and do what theschema table says. A schema may be considered a work flow description.For example, in an R/3 system, the business application source code,such as payroll driver source code 344, is basically designed tonavigate or traverse the configuration database tables that stores aschema(s). Business application driver 344 reads the schema table row byrow, takes the data out of the schema tables, and executes the rulesassociated with a specific function of the schema. These rules areaffected by the data in the associated wagetypes. So a schema, and it'sassociated rules, needs a wagetype to direct it's functioning. Thesebusiness objects are all interrelated.

In a table-driven business system application, such as an R/3 payrollbusiness application, a wagetype business object (or its equivalent) maymodify the functionality of a schema, and the data in the wagetype canbe configured by a user or whoever configures the payroll application.For example, consider a simple schema to calculate A and calculate B.The calculate B function and calculate A function are executable bydriver source code 344 running the schema. But the order of execution offunction A and function B, that is, whether to calculate A and thencalculate B, or calculate B and then calculate A, is determined by theschema business object in configuration data 246, which is consulted bypayroll application source code 344 when executing. A user can modifythe schema business object and thus modify the configuration of businessapplication 340. Source code may contain the executable statementsimplementing the algorithms of how to calculate A and how to calculateB, but the connection and the order is determined by the configurationdata.

For another example, consider a rule business object that includes fivecalculation algorithms for a particular value. Configuration data,(e.g., in a wagetype object), may be set so that one algorithm is usedfor a specific group of employees at time X. At time Y, some legislationchange or a union negotiation for the group of employees may take placeand cause a need for a change for this particular group to switch toanother calculation algorithm. To make the change, a user may modify awagetype for this group employees in the business application bychanging their processing class values so that they use anotheralgorithm in their payroll calculations.

Common source code 370 represents code (and other business objects) thatare stored in a common code base that business applications share amongthemselves. Consequently, in legacy business systems, including R/3,there may be no clear separation between the logical instances ofexecution or the logical instances of the data in a businessapplication. Thus, when a user configures a part of a businessapplication that is common to other applications, e.g., in common sourcecode 370, the user may affect many different instances of objects atexecution. It is very difficult to verify that the changes made to thecommon code are correct for each and every business application thatuses it, because they all must be tested to be sure.

In addition, configuration data 346 may be changed or created thatcauses the unintended and/or incorrect use of objects stored in commonsource code 370. For example, in an SAP R/3 payroll businessapplication, a user may configure a United States schema to use aBrazilian tax calculation function, which is accessible from commonsource code 370. This is not correct, however, as the Brazilian taxfunction will perform a different calculation than a United States taxfunction.

As noted above, the data structure business objects, like wagetypes, andthe functional business objects, like rules, are very interconnected andchanges to one will typically affect the other. For example, changingpart of a payroll application data structure object, such as a wagetypeor a processing class of a wagetype, will likely affect the calculationsfor multiple employees done by multiple rules and related to multipleother wagetypes. And vice-versa. Consequently, in the table-based andtable-organized form native to business system 330, data structurebusiness objects and functional business objects are difficult tounderstand, maintain, modify, debug, optimize, and correctly manipulate.

Some embodiments of systems and methods consistent with the inventionrepresent business application objects as object-oriented programminglanguage elements, building a model of the business application in somerespects, and applying object-oriented programming language tools to themodel. The model and the tools improve a user's ability to understand,maintain, modify, debug, optimize, and correctly manipulate the businessapplication, as represented by the object-oriented programming languagemodel.

In some embodiments consistent with the invention, anything that isrelated to the configuration of the business application may beconsidered a business object for transformation to an object-orientedprogramming language element(s). In one embodiment, a designer mayselect and define the business objects that are to be modeled as OOPobjects. This selection and definition of business objects may be doneusing one or more different techniques, but generally the designer'sgoal should be to define business-application-layer objects, which arelogical collections of things (data, operations, etc.) reflecting thedesign and functionality of the business application, and not objectsbased on the implementation or data structures that implement thebusiness application, such as data-dictionary-layer structures. Abusiness application typically uses a relational database model, butbusiness object definition typically should not be based on the databaserelationships as they usually do not coincide with the logical businessfunctionality.

In one technique, a designer may analyze the outputs of a businessapplication and decide that the output data structures should bebusiness objects in the business application model. For example, runninga payroll application on an SAP R/3 system produces a table of resultwagetypes, making wagetypes a clear candidate for a business object tobe transformed into an OOP object. Smaller data structures that are partof larger data structures, such as processing classes, cumulations, andevaluation classes that are part of a wagetype, are also obviouscandidates for transforming into OOP objects.

A designer may also analyze the business application to identifybusiness entities that are treated as logical collections of data and/orassociated operations by the business application, as these are alsological candidates for definition as business objects. For example, anSAP R/3 payroll application provides user interfaces to configurewagetypes, schemas, and rules to customize the application, treatingthem as logical entities. Thus, wagetypes, schemas, and rules may beconsidered business objects for modeling by OOP language elements.Logical business entities that encompass other logical entities may bedecomposed to model as objects the encompassed logical entities thatcomprise them, such as decomposing wagetypes into processing classes,cumulations, and evaluation classes business objects.

After the business objects that comprise a model of a businessapplication are defined, embodiments of systems and methods consistentwith the invention may map them to specific object-oriented objects andelements. This may be done by analyzing the attributes of a businessobject and transforming them into an object-oriented language element,such as a JAVA™ (hereinafter referred to as “Java™” or “Java”) languageelement that appropriately models the business object attributes. Thisprocess involves finding a corresponding construct, structure, or otherelement within the destination object-oriented language to representeach important attribute, element, or relationship of the businessobject being transformed. For example, an object-oriented languageclass, such as Java™ class, may be used as a starting point to representmost business objects. Business objects that are basically datastructures, such as wagetypes in an R/3 payroll application, may berepresented using static OOP elements in an OOP object such as a class,for example, as shown in FIG. 7A (and explained further below). Businessobjects which contain executable code constructs, such as rules andschemas in an R/3 payroll application, may be represented using OOPobjects having code, such as a class with methods or functions, forexample, as shown in FIG. 25 (and explained below). Otherobject-oriented language features may also be used to model businessobject attributes. For example, object-oriented language superclassesand subclasses may be used to model the hierarchy and inheritancyattributes of business objects, and object-oriented language scopeelements, such as public and private, may be used to model the scopeattributes of business objects, etc.

This mapping process may be automated by defining a set of mapping rulesused by a conversion engine to take input business object data forbusiness objects and convert it into a corresponding object-orientedlanguage object as described further below.

In addition to transforming business objects into correspondingobject-oriented language objects, elements, etc., embodiments of systemsand methods consistent with the invention may also usecode-development-project-organization-tool features to model a businessapplication. For example, as noted above, a legacy business system 330typically shares common code and data structures 370 among businessapplications, so if something is changed in the common code, i.e., inthe common parts, it affects every object or structure that uses thatcommon part. One way to represent this feature of a business applicationin a model, such as an object-oriented model, may be to use codedevelopment project features and shared folders. For example, in manylegacy table-based business systems like R/3, many business objects havea common configuration across runtime instances of the application, buteach instance itself is independent, and different, at runtime. For aspecific example, consider a business application used for a division ofa business in Argentina and a division of the business in the UnitedStates. The application is configured using the same type ofconfiguration tools for Argentina and the United States, but the runningconfigurations of the application for each country are totally separate,and the same configuration objects within the context of the Argentinerun of the application can mean different things than within the contextof the United States run. They are like separate universes. Bothuniverses, however, have a common foundation of business objects thatare shared. These relationships and behaviors of the businessapplication may be modeled using separate projects to hold, delimit, andmanage the United States instances of the application objects and theArgentine instances of the application objects and by using sharedfolders to hold, delimit, and manage the common objects. Similarly,other OOP language development environment features, in addition toprojects and shared folders, could also be used to model businessapplication/business system features.

A designer modeling such aspects of a business system and businessapplication may look at the relationships within the businesssystem/application to identify “vertical dimensions” and “foundation”elements for projects and folders. A dimension may be thought of as aninstance of all the objects involved in a process. A foundation elementmay be thought of as a common element that is used by many instances. Soif an application uses the same structure more than once, but the datais different each time (i.e., there are many instances of the samestructure), then these may be modeled as different dimensions (projects)with a common foundation (shared folder). Thus a model, such as anobject-oriented model, of a business application/system organized byprojects and shared folders enables demonstration and evaluation of theeffects to the dimension(s) of modifying a foundation element. Put inobject-oriented terms, a foundation element may perhaps be analogized toa class definition for an object, while a vertical dimension may beanalogized to an instance of the class object. Each instance may be thesame architecturally, yet the data in each one is different. Suchanalogies and may be useful to a designer modeling complex table-drivenbusiness applications and systems having shared code and data structuresand building transformation rules for converting business applicationobjects and applications into object-oriented language representations.

Systems and methods consistent with the invention analyze a businessapplication's data, operations, and relationships and create acorresponding model, such as an object oriented programming (OOP) model,corresponding to the business application entities. In one embodiment anOOP model may be realized in the Java programming language and mayinclude OOP objects, functions, and operators. Each OOP model accuratelyrepresents the data, relationships, and rules associated with thecorresponding business entity. Once converted to an OOP modelembodiment, systems and methods consistent with the invention may usestandard OOP tools to understand, manipulate, design, redesign, analyze,and modify the business application. This can be done independently ofthe native business application system, as the OOP model is separate andindependent from the business application entities. Modifications madeto the OOP model may then be converted back into business applicationentities and installed in the native system.

Detaching Application into Offline Mode

FIG. 4A illustrates a flowchart illustrating an overview of an exemplaryprocess 400 for creating an off-line model of a business application,consistent with the present invention. The exemplary process is appliedto a business application composed in a first programming format. Theprogramming format for such business applications are often specializedprogramming formats unique to each particular business application and,as described above, typically have limited flexibility in how aprogrammer may conduct efficient programming or debugging tasks.

As shown in FIG. 4A, systems consistent with the invention may translatethe business application into a model representing the businessapplication (stage 410). More particularly, the model reflects arepresentation of the business application in a second programmingformat different than the original or first programming format of thebusiness application. In preferred embodiments of the invention, thesecond programming format may be an OOP language, such as Java or C++.The process for translating the business application into a model isdescribed in greater detail below with respect to FIGS. 5 to 8.

Once the system has generated the model of the business application, thesystem may then enable a user to process the model in a processingenvironment or platform corresponding to the second programming format(stage 420). For example, as described above, the second programmingformat may be an OOP language, such as Java. Systems consistent with theinvention may thus enable a user to program, debug, or analyze theprogramming code of the model by using, for example, an OOP editor orother type of OOP processing environment or platform. Because the usermay process the model, as opposed to the actual business application,the user may do so while business application is still running. Thus,systems consistent with the invention allow a user to process a businessapplication without interfering with normal business activities.

Further, by taking advantage of processing tools available with such OOPprocessing environments, the system may enable a user to use one or moretools to process the model. FIG. 4B is an exemplary illustration 440 ofthe various processing tools consistent with the invention. As shown inFIG. 4B, the system may enable a user to apply the processing tools tothe model of the business application (stage 445). These processingtools may include a deprecation process (stage 450), a refactoringprocess (stage 455), a runtime error process (stage 460), a developmentprocess (stage 465), an optimization process (stage 470), a design toolsprocess (stage 475), and a version compare process (stage 480). Theseand other processing tools consistent with the invention are describedin greater detail below with respect to FIGS. 9 to 15. Further, FIGS. 17to 56 illustrate exemplary user interface screens enabling a user toprocess the model representing the business application.

The system may then re-translate the model representing the businessapplication in the second programming format back to the firstprogramming format (stage 430). As described below, systems consistentwith the invention may translate the model in such a way that anymodifications made to the model in the second programming format areautomatically reflected in the re-translated business applicationcomposed in the first programming format. The process for re-translatingthe model back to the first programming format is essentially thereverse of the forward translation process described above with respectto stage 410, and as illustrated below with respect to FIGS. 5 to 8.

FIG. 5 illustrates the exemplary modeling process 500 of FIG. 4 ingreater detail. As shown in FIG. 5, to translate the businessapplication into the second programming format, the system receives thelogic entities of the business application composed in the firstprogramming format (stage 510). As described above with respect to FIG.1, these logic entities may be the business data structures (e.g.,configuration data 100 and business rules 125) of the businessapplication. Based on the received logic entities of the businessapplication, the system may then generate a model representing thebusiness application in the second programming format (stage 520). Asalso describe above, the second programming format may be, for example,an OOP language such as C++ or Java. The system may then, as describedabove with respect to FIG. 4, process the generated model of thebusiness application (stage 530). The system may then re-translate theprocessed model to regenerate the business application in the firstprogramming format (stage 540).

Generating a Model of a Business Application

FIG. 6A illustrates an exemplary process 600, consistent with theinvention, for translating the business application into a modelcomposed in the second programming format. As shown in FIG. 6A, thesystem may receive the data structures, which may be table-based datastructures, of the business application (stage 610). In this regard, thesystem may scan the business application to identify the table-baseddata structures, which may be any group or segment of data reflectingdata stored in a table-based format of the business application. Thetable-based data structures may, for example, correspond to theconfiguration data and rules of the business application. Further, eachtable-based data structure may include attributes of the data stored inthe respective table-based data structure. For instance, as explainedabove with respect to FIG. 1, a table-based data structure may includeconfiguration data 100 having attributes 105 to 120 or a rule 125 havingoperation attributes 130 to 140.

The system may then select the minimum set of attributes of table-baseddata structures that uniquely define the table-based data structures(stage 620). To this end, the system may first identify those attributesof, for example, the configuration data (e.g., attributes 105 to 120)and any rules (e.g., operation attributes 130 to 140). The system maythen identify those attributes that are common to each table-based datastructure. From the identified common attributes, the system may thenselect the least number of these common attributes that uniquely defineseach translational data structure.

Based on the selected minimum set of attributes, the system may thendefine one or more translational data structure(s) (stage 630). Insystems consistent with the invention, a translational data structuremay be an identified data or business structure of the businessapplication that is converted into an object-oriented structure. Forexample, in an R/3 payroll application, the minimum set of attributesmay include a geographic attribute (e.g., “New Zealand”), a versionreference attribute (e.g., “rna”), and a client reference attribute(e.g., “800”). The corresponding translational data structure may thusbe defined as NewZealand.rna.800. In OOP terms, the definedtranslational data structures may include at least one translationaldata structure that respectively corresponds to a project, an object,and an object instance. The system may then generate the model of thebusiness application based on the defined translational data structures(stage 640).

FIG. 6B illustrates an exemplary process 650 further describing theprocessing stages of FIG. 6A. As shown in FIG. 6B, the system mayreceive table-based data structures corresponding to configuration dataand rules of business application (stage 660). The system may thenidentify the attributes of received configuration data (stage 665) andidentify the attributes of received rules (stage 670). The system maythen determine those attributes common to the identified configurationdata and to the rules of the business application (stage 675). Fromthese common attributes, the system may then select the minimum set ofcommon attributes that uniquely define a translational data structure(stage 680).

As noted above, methods and systems consistent with the invention maytransform business application logic entities or structures into OOPstructures that represent the data, relationships, and operations of thebusiness application structures. In one embodiment, the businessapplication structures are transformed at the application level,including consideration of application logic, as opposed to the databasetable level. Thus, a complex business structure comprising ten or morerelated database tables, such as a wagetype in an SAP R/3 payrollprocessing application, may be transformed into a single OOP structure,such as a Java class, that encompasses all the information in the ten ormore related database tables.

In some embodiments consistent with the invention, business structuresare transformed into a hierarchical object-oriented class structure. Forexample, as described above, all the related business structures in abusiness application may be analyzed to identify common elements orattributes, and transformation involves defining an OOP superclass thatrepresents the common elements. Then, specific business structures areanalyzed to identify their unique elements, and each specific businessstructure is transformed into an OOP structure by defining subclassinstances of the superclass, which add representations of the uniqueelements of each specific business structure to the superclass. Thisexposes the hierarchy of the business structures to a user or administerviewing the OOP structures, and allows manipulation of the OOPrepresentations of the business structures by OOP design and developmenttools. In one embodiment, included in the transformation to OOPsubclasses is extraction of the data from the business structure forinclusion in the subclass. Thus, the values of various fields are alsoexposed to users and OOP tools.

Processes consistent with the invention for generating a model, e.g., anOOP model, of a business application are described in further detailbelow with respect to FIGS. 7 and 8. FIG. 7A, for example, illustratesan exemplary OOP structure consistent with the invention. Referringbriefly back to FIG. 2A, recall the example of a wagetype businessstructure 200 from a payroll application of an SAP R/3 system, which mayhave several attributes 205, such as several processing classattributes. An implementation consistent with the invention maytransform the data from a specific wagetype business structure 200, forexample the wagetype structure known as “/123, ” into an OOP structuresuch as a subclass that extends a “wagetype” superclass as shown in FIG.7A. The transformation process creates a valid OOP language name“wagetype_s123” 792 based on the business structure name “/123” anddeclares it as a subclass of the superclass wagetype 794. The OOPstructure corresponding to business application wagetype /123 containsand models the data and relationships 796 of the business applicationwagetype /123 extracted from the database tables of the businessapplication. In the example shown, included in the OOP structure arecode lines that model the processing class attributes 798 of thebusiness application structure wagetype /123. Also included in theexample shown is documentation 795 related to the business applicationstructure wagetype /123, which may be used and displayed by OOP toolssuch as JavaDoc™.

In some embodiments, transformation may be based on a set of rulesmapping or defining what OOP structure may create or define eachbusiness structure encountered in the business application. In oneembodiment, the set of transformation rules may be defined manually. Therules for translating a business application structure into an OOPstructure may create syntactically correct OOP structures (e.g., inJava™ code) useful for processing at the business application level. Forexample, one transformation rule for mapping various business structuresinto OOP structures may be to group them according to whether they shareoperations that can be performed on them. Another rule may be to createa subclass for each different time period attribute of a businessstructure based on start date and end date value of the time periodattribute. Another rule may be to, within a subclass, define eachbusiness structure configuration element, such as processing classattribute, as an OOP operation in that class. Yet other rules may definewhen to use a public, private, or shared OOP class attributes todetermine the scope and visibility of each OOP structure. Yet anotherrule may be to take each business structure as defined by the businessapplication and create a corresponding OOP structure, effecting aone-to-one conversion mapping.

FIG. 7B illustrates an exemplary process consistent with the inventionfor translating, for example, configuration data. As shown, the processbegins by defining transformation rules for converting table-based datastructures of a business application into structures (stage 710). Next,the process scans the business application to identify a table-baseddata structure (stage 720). Next, the process converts the identifiedtable-based data structure into an object-oriented structure, accordingto the transformation rules (stage 730).

The process then determines whether all the table-based data structuresin the business application have been converted into structures (stage740). If not (stage 740, No), the process loops up and continues toidentify and convert. If so (stage 740, Yes), then the process expressesthe structures in an object-oriented programming construct, such as anOOP class (e.g., a Java™ class) that represents the table-based datastructure.

FIG. 7C is a block diagram of an exemplary architecture, consistent withan embodiment of the invention, for transforming a business application.As shown, a business application 755, such as the Payroll application inan SAP R/3 system, includes business application structures 757, whichare logical entities embodied in various database tables or other dataformats. In one embodiment, business application 755 is a preexistingapplication (such as the an application in an SAP R/3 system) that hasbeen modified by adding remote function calls 760 that retrieve businessapplication structures at the request of an outside application.

In the embodiment shown, extract module 765 implements a process thatretrieves business application structure data from the businessapplication and readies the data for transformation into anobject-oriented structure. For example, extract module 765 may send adata request via remote function call 760 to business application 755and receive, in response, all the appropriate application data about abusiness structure 757, including context data about business structure757. The application data from business application 755 may also includeinformation about the data, e.g., documentation describing the data. Inthe embodiment shown, extract module 765 maintains a context directory770 containing information regarding what context is needed for eachactivity and a translation module 775 that translates the businessapplication data into XML, or a similar markup language.

Transform module 780 receives the XML-formatted business applicationdata from extract module 765. Transform module 780 contains an embeddedconversion mapping component 785 that is used in transforming theXML-formatted business application data into an object-orientedstructure. Conversion mapping component 785 includes transformationrules, as described above. For example, a business application structurelogic entity, such as a “standard deduction” application structure(which may consist, in business application 755, of a number of physicaldatabase tables containing various content data), may be mapped with aconversion algorithm into a Java™ class or a set of Java classes. In oneembodiment, the name of the resulting object-oriented structure maytypically correspond to the name of the logic entity from businessapplication 755. For example, the model representing businessapplication 755 may include a “standard deduction” Java™ class, andinstances of the class representing each type of standard deduction inbusiness application 755. Documentation information describing thebusiness application structure from business application 755 may betransformed into comments, such as Java™ language source code comments,or the like and associated with the OOP construct created to representthe business application structure.

Transform module 780 provides the object-oriented structure representinga business application structure to an object-oriented language tool790, such as a Java™ integrated development environment tool, a Java™code optimizer, a configuration management tool, etc or an integrateddevelopment environment, such as ECLIPSE™ (hereinafter referred to as“Eclipse”) (www.eclipse.org), that incorporates many softwaredevelopment tools. Object-oriented language tool 790 may be used tounderstand, maintain, develop, design, redesign, modify, configure, orotherwise manipulate the OOP model of business application 755. Forexample, a customized wagetype editor/viewer may be included as part ofan integrated development environment for an SAP R/3 system, presentingstructures such as the class shown in FIG. 7A on easy to understand,use, and navigate user interfaces, such as the examples shown in FIGS.22 and 23.

In one embodiment consistent with the invention, extract module 765,transform module 780, and object-oriented language tool 790 may beimplemented on a computer(s) separate from the computer implementingbusiness application 755, such that business application 755 can bemodeled, and the OOP model manipulated, without interfering with theongoing operation of business application 755. Further, one of ordinaryskill will recognize that Java™ is merely used as one example of an OOPlanguage, and that the scope of the invention includes other OOPlanguages, such as C++, C#, Visual Basic, etc.

As with data structures (e.g., for configuration data) in legacybusiness applications, the operations, instructions, or business rulesthat implement the application are also typically table-based. That is,the operations that perform a business rule function, such as deductingpayroll taxes from an employee's paycheck, (and some of therelationships between the operations), may be contained in databasetables. The operations may be executed by application source code thattraverses the tables when carrying out a particular rule. And, similarto business data structures, business rules or operations may becontained in many different database tables, which entail the samedrawbacks described above for table-based business data structures.Perhaps worse, there may be no physical connection between the rulestables and the data tables they operate on and vice-versa. Just as withtable-based business application structures, these table-centric rulesand operations are difficult for users and administrators to comprehend,manage, create, revise, maintain, and debug.

Embodiments of methods and systems consistent with the inventiontransform business application operations, rules, and schemas into OOPconstructs that represent the operation, rule, or schema, emulate itsoperation in terms of sequence with other operations, and represent itsrelationship(s) to the data it operates with and upon. A rule may bethought of as a sequence of operations that work on data structures toperform a business function. A schema may be thought of as a businessprocess or workflow that connects a sequence of rules and datastructures to perform a more complex business function, for example, asillustrated in FIG. 2C.

In one embodiment, an automated system determines each operation thatmakes up a schema or rule in the business application by analyzing thedatabase table(s) that hold the schema or rule, for example, byanalyzing the rule tables in an application in an SAP R/3 system orother business application. In one embodiment consistent with theinvention, for each business operation found, the system transforms theoperation into part of an OOP model by declaring or creating an emptyOOP language construct with a similar name to that of the businessoperation, such as a Java™ function or method. The system may insert astandard number of parameters, or make other modifications, to make thesyntax of the newly declared OOP construct valid for the programmingformat being used, such as the Java™ language. The system preferablyputs the OOP constructs in the same sequence as the business applicationoperations to form an OOP model object representing the rule, schema,etc. that encompasses the business application operations. Thus, in someembodiments consistent with the invention, the system produces a modelthat represents the configuration of the business application rules andschema, but not their functionality, as the OOP constructs are nullfunctions.

In one embodiment, the OOP language code representing the businessoperations may contain function or method calls only, while the bodiesof the functions or methods are empty. OOP languages such as Java™ allowa null function body and can compile a function call with a nullfunction body. For example, a payroll business application for an SAPR/3 system may contain a business rule with the operation “NUM=.” Anembodiment of a system consistent with the invention may create asyntactically correct null Java function named “NUM=” when modeling thepayroll business application. Thus, as noted, the system may produce amodel that represents the configuration of the business applicationrules and schema, but not their functionality, as the OOP constructs arenull functions. Since the OOP language syntax is correct, OOP languagetools, such as compilers, analyzers, optimizers, etc. can be used tofind errors or problems in the configuration model, such as errors inrelationships, calls, interactions, design, etc. associated with themodeled null functions.

This is useful because any errors associated with the model are alsoassociated with the business rules and operations it represents. Forexample, if a modeled OOP function calls another OOP function that doesnot exist (because there is no corresponding business applicationoperation that caused the called OOP function to be created in themodel), this error will be exposed by the OOP language tools, such as acompiler or linker.

In some embodiments consistent with the invention, the OOP functionsinclude documentation pulled from the business application to help usersunderstand the function. In some embodiments consistent with theinvention, the process that transforms business application operationsor rules into OOP constructs that represent the operation or rule iscontrolled by a set of transformation rules. These transformation rulesmay be generated manually. The transformation rules should be designedsuch that the resulting OOP language function enforces the scope andother characteristics of the business application operation through OOPlanguage techniques. For example, a business application rule (andtherefore the operations that comprise it) may be valid for only onecountry, or in a few countries, or in all countries. To enforce thisscope, the transformation rules may produce functions of appropriatescope, such as global, shared, or local. In some embodiments, an OOPproject model may also be used to enforce the scope of OOP objects andfunctions.

In a manner similar to that explained above regard transforming businessapplication data structures into OOP structures, the exemplaryarchitecture shown in FIG. 7C may be used to implement a system thatalso transforms a sequence of business application operations (e.g.,business application rules or schemas), into object-oriented languageconstructs. In the architecture shown, object-oriented tool 790 mayinclude a customized rule editor/viewer (not shown) as part of anintegrated development environment for an SAP R/3 system, presentingeasy to understand, use, and navigate user interfaces, such as theexamples shown in FIGS. 17 and 25. As explained further elsewhere inthis application, the OOP constructs representing the businessapplication rules and schemas may be modified, changed, optimized, etc.using OOP language tools, and then reverse transformed back to thebusiness application format and the run in the business application.

As with data structures (e.g., configuration data) and operations (e.g.,rules) in business applications, the relationships or links betweenbusiness objects, such as business data and business operations, arealso typically table-based, making the relationships difficult, at best,to discern statically. For example, as illustrated in FIG. 3, therelationships between configuration data 305 and business rules 310 maynot be realized until runtime. This makes it difficult for users andadministrators to detect errors in the relationships, such as missingbusiness data that is referred to by other data or a business rule,especially when working with the tables at any time other than run time.

Methods and systems consistent with the invention transform businessapplication relationships or links into OOP constructs that representthe relationship, tying together different types of business objects,such as data and operations, in an easily comprehensible and manageablemanner, and in a manner that allows automated OOP tools to check theintegrity of the relationships. In one embodiment, an automated systemuses an object-oriented language construct, such as an assignmentoperator (e.g., “=” in Java), to link together OOP objects representingbusiness data and business operations. The object-oriented languageconstruct binds different OOP objects representing business applicationobjects and shows and enforces a relationship between them. For example,as shown in the exemplary implementation of FIG. 7A, the processingclass objects 798 of a wagetype object may be related to processingclass value objects, and these relationship are represented by the Javaassignment operator “=.” The processing class object“WageType_s123.ProcessingClass03, ” for instance, is linked to the valueof the business object “processingclasses.ProcessingClass03.Value0” bythe equality operator “=.”

Other business objects may also be linked. For example, a business ruleobject may be linked to a wagetype object that it affects. For instance,as shown in the example of FIG. 27, a variable object in a rule may belinked to a wagetype processing class attribute, with that linkrepresented by an assignment operator.

Representing the business object relationships as OOP languageconstructs, such as an assignment operator like “=,” allows the use of aOOP language tool, such as a Java debugger, to walk through referentialrelationships and discover referential problems in the integrity of thebusiness application layer. For example, as shown in FIG. 7A, if thevalue of processingclasses.ProcessingClass03.Value0 is not defined, thenthe compiler will flag a reference error when it processes the equalityoperator in the statement“WageType_s123.ProcessingClass03=processingclasses.ProcessingClass03.Value0.”Thus, when trying to resolve the assignment operator relationship, aJava compiler will be able to identify broken links or references, whichrepresent empty links in the corresponding modeled business application.Consequently, for an instance of wagetype, for example, a user can seefrom the Java code model what values are acceptable for each processingclass. The model also lists exactly which processing classes are part ofthe wagetype, and thus any unlisted processing classes are not definedfor that wagetype (and so not allowed). The assignment operator andprocessing classes included in the wagetype OOP structure are examplesof integrity checks for the business application.

FIG. 8 illustrates an exemplary process consistent with the invention.As shown, the process may begin by defining transformation rules forconverting logical connections from a business application intostructures that represent the logical connections (stage 810). Next, theprocess may scan a business application to identify a logical connectionor link between table-based data structures or between table-based datastructures and rules (stage 820). Next, the process may convert theidentified logical connection or link into an object-oriented structure,according to the transformation rules (stage 830). In one embodiment,the transformation rules include using the equality operator of an OOPlanguage as the object-oriented structure. In some embodiments, thetransformation rules are defined manually according to criteria similarto that described for transforming business structures and businessrules.

The process may then determine whether all the logical connections orlinks in the business application have been converted into structures(stage 840). If not (stage 840, No), the process may loop back andcontinue to identify and convert logical connections. If so (stage 840,Yes), then the process may display the structures as an object-orientedprogramming construct, such as an assignment operator, between relatedbusiness data and/or business operation representations (stage 850).

In the exemplary embodiment shown, the process may then identify anyproblems associated with the object-oriented structure, such as anunresolved reference or other integrity problem (stage 860). Suchproblems may be identified by convention OOP language tools, such ascompilers and linkers. Any such problem represents a problem in thecorresponding business application structures and relationships, and theOOP language constructs model the relationships and behaviors of thebusiness application from which they are derived.

As with data structures (e.g., configuration data) and operations (e.g.,rules) in business applications, the relationships or links between thebusiness data and business operations are typically table-based, makingthe relationships difficult, at best, to discern with the table-centricviews and tools provided by a typical business application system. Forexample, as illustrated in FIG. 3, the relationships betweenconfiguration data 305 and business rules 310 may not be realized untilruntime, making it difficult for users and administrators to comprehend,manage, create, revise, and debug such relationships, especially byworking with the static tables before runtime. In another example, asingle business rule may be stored in multiple tables. To determine allof the configuration data used by such a business rule, it may benecessary to study all of the multiple tables storing the rule. Thisprocess can be time-consuming and error-prone, just to understand therelationship between a business rule and the data on which it operates.

Embodiments of methods and systems consistent with the present inventiontransform business application objects and relationships intoobject-oriented programming constructs, making it possible to displaybusiness objects and their relationships in an easily comprehensible andmanageable manner.

Using processes described above, a model, such as an object-orientedmodel, may be generated to represent a table-based business application.The model may represent logical entities of the business application,such as rules, configuration data, and schema. The model may alsorepresent links between the logical entities. In this way,object-oriented tools and graphical user interfaces may be used todisplay the links between the logical entities of the businessapplication.

For example, as shown in FIG. 31, a user may select a business objectsuch as an evaluation class, e.g., evaluation class 02, “Wage typeassignment for pay statement.” This business object may be chosen from amenu of available evaluation classes, as-shown in the upper center rightpanel with the tab labeled “Evaluation Class.” By processing a model,such as an object-oriented model, of the business application usingcommon object-oriented tools and methods, all business applicationobjects that reference evaluation class 02 may be determined anddisplayed. For example, the referencing objects may be displayed in alist of References, as shown in the bottom right hand pane with the tablabeled “References.” A total number of referencing objects may becalculated and displayed, such as “(found 785)” in the bottom right handpane with the tab labeled “References.”

Thus, a user may easily see all the business objects that depend upon orare somehow related to the selected business object and gain awarenessof the scope of objects in the business application that may be affectedby a change to the selected business object. By using a model of thecomplex, table-based business application, relationships not previouslyunderstandable may now be easily determined and displayed.

In another embodiment consistent with the invention, an outline may begenerated and displayed to expose the structure of business objectswithin a business application For example, in FIG. 17, a singleintegrated display shows information pulled from an R/3 system in aJavadoc displayed in the lower left pane. This information includes, forexample, a name of a business application object (e.g.,payroll.schemas), a use of the business application object (e.g., “Thisfunction retrieves employee health plan benefit information . . . ”),business application syntax for the object (e.g., Fkt Par1 Par2 Par3Par4), and an explanation of the parameters.

This information may be displayed simultaneously with a model, such asan object-oriented model, of the business object. In the lower rightpane of the single integrated display shown in FIG. 17, pseudo-Java codeis displayed that represents payroll.schemas as an object-orientedpackage. Drop-down lists and pop-up windows may be displayed with theintegrated display to provide more information. For example, theinformation from R/3 shown in the lower left-hand pane may also be shownin a pop-up window over the object-oriented pseudo-code when a userselects a certain part of the object-oriented structure.

In these ways, methods and systems consistent with the present inventionuse models and programming tools, such as object-oriented models andtools to determine and display the relationships between logicalentities in a table-driven business application.

Processing a Model of a Business Application

The following sections describe exemplary embodiments for processing amodel of a business application. While the description below providesheadings

Exposing Deprecated Entities

Business applications often involve large, complex legacy systems. Overtime, these systems evolve to accommodate changing business rules, userneeds, etc. Each change to a business application may affect many logicentities within the business application. For example, changing aprocessing rule may result in another logic entity, such asconfiguration data, that is no longer used by the business application.However, because the business application is large and complex, the usermaking the change may be unaware that the logic entity is now unused andcould be deleted. Instead, the unused logic entity remains in thebusiness application even though it is never again used.

As time passes, a business application may develop a great deal ofunused, or “deprecated” logic entities, including configuration data andprocessing rules. Traditional table-based business applications do nothave a mechanism for identifying or removing deprecated logic entities.This results in wasted storage space and unnecessary programmingcomplexity associated with conventional business applications.

Using methods and systems consistent with the present invention,deprecated logic entities of a business application may be identifiedusing models and programming tools, such as an object-oriented model ofthe business application. By transforming business applicationstructures into structures, deprecated logic entities in the businessapplication may be exposed using object-oriented referential integritychecking.

For example, an object-oriented code compiler checks syntax andidentifies potential problems, such as mixed data types, brokenreferences, etc. Because a compiler does not actually run the code, itcan be used to analyze a model, such as an object-oriented modelconsistent with the present invention. The potential problems identifiedby the compiler in the model may correlate to deprecated logic entitiesin the business application. These potential problems may be marked inan integrated configuration environment to indicate deprecated logicentities that could be removed to streamline the corresponding businessapplication.

Each logic entity in a business application may be transformed into acorresponding object-oriented structure. An object-oriented compiler maythen be used to check the referential integrity of the structures.Although the object-oriented compiler thinks it is finding problems,such as broken references, in object-oriented code, it is actuallyidentifying problems in the underlying business application. Forexample, the object-oriented compiler may identify a reference to abranch of code that will never be executed. By correlating theidentified branch of code with its corresponding logic entity in thebusiness application, a deprecated logic entity is identified. In oneembodiment, deprecated logic entities may be removed from the businessapplication after they have been identified using the model.

In one example, a business application logic entity, such as “wagetype,”may not be defined in the business application for a certain countrysuch as New Zealand. However, “wagetype” cannot be deleted from thebusiness application altogether because it is defined for othercountries. During transformation, the object-oriented structurecorresponding to wagetype in New Zealand may be created but marked asdeprecated to indicate that it is unused in the underlying businessapplication. Deprecated structures may be marked, for example, usingyellow underline in displayed object-oriented programming language.Yellow might be used because the deprecated structure is not an errorthat needs to be fixed (which might be shown in red). In this way, auser viewing the object-oriented structure is alerted to deprecatedstructures in the business application and can more readily study theeffects of changes.

FIG. 9 is a flowchart of a method for exposing deprecated businessapplication logic entities using a model. In this embodiment of thepresent invention, a model representing logic entities of the businessapplication is received (step 910). As discussed above, the model maybe, for example, in an OOP format. The model is processed using a codecompiler, such as an object-oriented code compiler, to identify apossible exception in the model (step 920). The possible exception inthe model is correlated to an unused logic entity in the businessapplication (step 930), and an indicator of the possible exception maybe displayed with the model to depict the unused logic entity in thebusiness application (step 940).

For example, a code compiler may identify a dead pointer in anobject-oriented model of business application logic entities. The deadpointer may correlate to an obsolete rule (e.g., a repealed or expiredtax) in the business application. When the model is displayed in anintegrated configuration environment, the corresponding object-orientedcode structure may be underlined or highlighted or otherwise marked toindicate the deprecated business application logic entity. Otherpossible exceptions include orphans, cost structures that do not exist,outdated regulations, expired taxes, etc.

One example of a display consistent with the present invention may befound in the screen shot shown in FIG. 25. A business application rule,“W020—Cumulation of gross amount,” is displayed using a model in a largewindow of a single integrated configuration display. To the right sideof the large window is a series of rectangular flag markers indicatingpossible problems identified by a code compiler applied to the model.When the cursor is placed over a flag marker, a pop-up box may bedisplayed reading, for example, “RuleWRFI cannot be resolved.” This mayindicate to a user that the business application logic entitycorresponding to the model may be deprecated.

Refactoring

Modifications made to a business application can make an already complexsystem even more unwieldy to understand and maintain. These difficultiesare compounded by the fact that table-based business applications do notallow the use of design techniques available in other types of systems.Refactoring is a programming technique for improving the design ofexisting software code without altering the code's behavior. Refactoringmay improve code by, for example, consolidating many statements intoone, decomposing long methods into shorter ones, eliminatingredundancies, etc. Refactored code may be easier to read and understand,simpler to debug, and more efficient to run and maintain.

Systems and methods consistent with the present invention enable the useof refactoring to reorganize the configuration of a businessapplication. By transforming business application structures intostructures, object-oriented refactoring tools may be used to retool theunderlying business application.

Program refactoring tools may be applied to structures to edit thestructures without affecting their behavior. Refactoring may be arecursive process, taking several passes through a structure or codesection in order to optimize and improve it. Refactoring might beperformed on an ongoing basis to maintain code and structures, or itmight be applied for a specific purpose, such as preparing anapplication for a major upgrade.

Using this invention, any number of refactoring tools may be applied tothe business application through application to a model of the businessapplication. These tools might include:

(1) Rename refactoring: This function enables the renaming of anypackage, class, method or variable, and automatically finds and correctsall references to it. By applying the rename tool to the model, thetables and references in the underlying business application may bebetter organized or named.

(2) Extract method refactoring: This function analyzes a selected pieceof code and transfers it into a separate method in order to aid programmodularization and break code into manageable pieces. By applying theextract method tool to the model, the underlying business applicationmay be better organized and easier for users to understand.

(3) Inline variable refactoring: This feature replaces all references ofa variable with a declaration expression, then deletes the oldervariable text. This can save time and effort when rearranging code orintroducing upgrades, such as new tax laws or new employees. By applyingthe inline variable tool, the business application may be updated with aminimum of potential referencing errors.

(4) Clean imports refactoring: This function allows a user to scan codein order to find and remove unnecessary import statements. Applying thistool may assist with identifying and cleaning up superfluous elements inthe underlying business application.

A skilled artisan will recognize that these and may other refactoringtools and methodologies may be applied to the structures in order toeffectively refactor the corresponding business application.

Using methods and systems consistent with the present invention, eachlogic entity in a business application may be transformed into acorresponding object-oriented structure. An object-oriented refactoringtool may then be used to refactor the resulting structures. Therefactoring tool will improve the structures by, for example,consolidating many statements into one, decomposing long methods intoshorter ones, eliminating redundancies, etc. However, the operation ofthe code will not be affected. Once refactoring of the object-orientedcode is completed, the object-oriented code may be translated back intoits corresponding business application logic structures. In this way,the business application will reflect the improvements made byrefactoring the object-oriented code.

FIG. 10 is a flowchart showing an exemplary method for redesigning abusiness application composed in a first programming format consistentwith an embodiment of the present invention. When a model representingthe business application in a second programming format is received(step 1010), the model may be processed using a code refactoring tool inthe second programming format (step 1020). In one example, the firstprogramming format may be a table-based format, such as R/3, and thesecond programming format may be an object-oriented programming format,such as JAVA™.

Modifications to the model made or suggested by the code refactoringtool may then be analyzed (step 1030). Modifications suggested by thecode refactoring tool may include, for example, removing redundant code,renaming variables or methods, breaking large routines into shorterones, etc. Each modification may be analyzed before it is accepted, ormodifications may be party or fully automated. After the modificationsare accepted and/or applied to the object oriented model, theobject-oriented code may be translated back into its correspondingbusiness application logic structures to propagate the changes into thebusiness application, thus effectively refactoring the businessapplication itself. In this way, refactoring modifications may beapplied, in the first programming format, to the business application(step 1040).

In one example, the code refactoring tool includes removing redundantcode of the model in order to remove redundant code in the correspondingbusiness application. In another example, the code refactoring toolincludes consolidating many statements into one, which may in turnstreamline the corresponding business application. In yet anotherexample, the code refactoring tool includes decomposing long methodsinto shorter ones, making the corresponding business application easierto understand and work with.

Runtime Errors

Given the complexity of a business application, each change made to itmay affect many logic entities within the business application,resulting in errors that may not be apparent until runtime. For example,changing configuration data related to a project may result in a call toa processing rule that does not exist for that project. However, becausethe business application is large and complex, the user making thechange may be unaware that the call will result in an error duringconfiguration. Instead, the user may not realize the error untilruntime, when it is costly and time-consuming to correct. Traditionaltable-based business applications do not have any simple mechanism foridentifying or removing runtime errors at design time.

Using methods and systems consistent with the present invention, runtimeerrors in a business application may be identified prior to runtimeusing a model of the business application. By transforming businessapplication structures into structures, runtime errors (such asunresolved references) in the business application may be exposed usingobject-oriented referential integrity checking.

Each logic entity in a business application may be transformed into acorresponding object-oriented structure. An object-oriented compiler ordebugger may then be used to identify errors, such as syntax errors orbroken references, in the structures. Although the object-orientedcompiler thinks it is finding problems in object-oriented code, it isactually identifying problems in the underlying business application.For example, the object-oriented debugger may identify a reference to abranch of code that does not exist. By correlating the identified branchof code with its corresponding logic entity in the business application,a problem with dependencies in between business application structuresmay be identified. In one embodiment, a user may correct the problems inthe object-oriented code and translate the corrections back to thebusiness application before running the business application.

A runtime error in the business application may be, for example, callinga rule that does not exist for a project, such as a country, orattempting to create a wagetype that does not exist for a project, suchas a country. In one embodiment, when business application structuresare transformed into structures, a referential error might be revealedby a class that is declared but empty. These errors, once identifiedusing the model, may be displayed using, for example, red underline toshow that runtime errors will occur in the business application. Theidentifier may be propagated up through a number of user interfaces toshow potential problems at any level of the system.

A sample screen shot of how potential errors may be displayed isincluded in FIG. 29. In the integrated configuration environment of FIG.29, a business application rule, “W020—Cumulation of gross amount,” isdisplayed for project USA.rna.800 using a model in a large window. Tothe right side of the large window is a series of rectangular flagmarkers indicating possible problems identified by a code debuggerapplied to the model. When the cursor is placed over a flag marker, apop-up box may be displayed reading, for example, “RuleWRFI cannot beresolved.” This may indicate to a user that the business applicationlogic entity corresponding to the model has a potential runtime error.The display also includes a list of problems (e.g., “Rule 9112 cannot beresolved”) in the lower right portion. The problems may be furtherdisplayed up the hierarchy of menus using, e.g., a red “X” to show theproblem in the list of Payroll Rules, the list of logic entities withinproject USA.rna.800, and the list of all projects. By propagating theerror flag up the menu hierarchy, users may be alerted of many potentialruntime errors quickly and effectively.

In traditional table-based business applications, a log file may becreated to trace the path of processing during a sample run (e.g., apayroll run) of the business application. The log file may note errorspresent in the business application. However, the log file is typicallylong and difficult to debug. By using object-oriented programmingconstructs, debugging may be greatly simplified. The sequential view ofa log file is replaced by an object-oriented data representation viewthat is familiar to developers today. In this way, the same data usedfor debugging may be presented in a much more user-friendly fashion. Inone embodiment, the debugging may be performed offline, increasingefficiency and flexibility of maintaining the business application.

FIG. 11 is a flowchart for a process for analyzing referential integrityof a business application consistent with embodiments of the presentinvention. A model representing the business application may be received(step 1110) and processed using a code compiler to identify a compilerexception (step 1120). The compiler exception may be, for example, abroken reference, an infinite loop, etc. The compiler exception in themodel may be correlated to a referential integrity instance in thebusiness application (step 1130), and correction of the compilerexception in the model may be enabled (step 1140). Correction may beenabled through displaying flags or other indicators to call theproblems to the user's attention and providing configuration tools viaan integrated configuration environment. Finally, the correction to thebusiness application is applied to correct the correlated referentialinstance (step 1150).

One skilled in the art will recognize that many different codeanalyzers, including debuggers, interpreters, compilers, etc. may beused to identify possible runtime errors in the business application andthat many different ways of marking and correcting these errors may beemployed consistent with embodiments of the present invention.

Interactive Development Environment (IDE)

Business applications, such as the R/3 system created by SAP, ofteninvolve large, table-based systems and evolve over many years asbusinesses grow and change. Highly trained consultants may be employedto implement, configure, and maintain a business application for acompany. Due to the complexity of traditional business applications, itmay take years to configure an application for a single company. Becauseof their legacy nature and highly customized usage, businessapplications typically have limited development tools to assist in theconfiguration and maintenance of the applications.

To assist in the configuration and management of such businessapplications, systems and methods consistent with the present inventionenable business application consultants to configure and maintainbusiness applications using an interactive configuration environmentthat offers the simplicity and usability of an IDE.

An IDE is a set of tools available to assist a software developer inwriting and maintaining software code. IDEs enable users to design andmanipulate code, such as object-oriented code, in an easy-to-understandmanner. An IDE may include multiple programs that are run from a singleuser interface. For example, programming languages often include a texteditor, compiler and debugger, which are all activated and function froma common menu. Other IDE tools may include a version control system, GUIdesign tools, a class browser, an object inspector, and a classhierarchy diagram. IDEs are available for specific programminglanguages, e.g., the Visual Basic IDE, or for multiple languages, e.g.,the Eclipse IDE.

An interactive configuration environment consistent with the presentinvention integrates and displays a table-based business applicationusing a single, interactive display. For example, users can write a newbusiness rule using familiar object-oriented code, and that code may beconverted into logic entities to apply the new rule in the businessapplication. In another example, users may view existing businessapplications using an IDE interface. In this way, users may not need toworry about the format or structure of the business application but maystill be able to understand and configure it.

When business application structures are displayed using object-orientedcode structures, the business meaning of the object-oriented codestructures may also be displayed in the integrated environment. Forexample, when a user rolls a mouse over an item in the object-orientedcode, documentation of the underlying business meaning may be displayedin a pop-up box. This aids the user in understanding a complex businessapplication using familiar, easy-to-understand object-orientedprogramming constructs.

Using an object-oriented user interface, the user may browse businessapplication logic entities and related objects using a single integrateddisplay. Object-oriented code assists and templates may be available toassist users in writing new object-oriented code in order to add newlogic entities to the business application. A template may consult atranslation key to determine syntax, parameters, etc. and display theseoptions in a drop-down list in the object-oriented code display. UsingIDE tools, a state of the business application may be compared with achanged state of the business application, for example, by using aside-by-side display.

FIG. 12 is an exemplary flowchart of a method for analyzing theconfiguration of a business application consistent with embodiments ofthe present invention. When a model representing the businessapplication is received (step 1210), the model may be displayed using adeveloper interface (step 1220). The model and corresponding businessapplication may be integrated and displayed using a single, dynamicdisplay, e.g., the integrated configuration environment shown in FIG.17. The integrated configuration environment may include, for example, aseries of windows displaying business application entities as ahierarchy of projects, rules, and schema. The environment may alsoinclude a model, such as an object-oriented model, of a businessapplication object displayed together with documentation pulled from thebusiness application.

When a change to the model is received through the developer interface(step 1230), the change to the model may be correlated to acorresponding configuration change in the business application (step1240). The corresponding configuration change may be applied to thebusiness application or it may simply be used to model possible changes.

For example, a consultant may wish to modify a rule in the businessapplication. Rather than analyzing the table-based structure of thebusiness application to determine the tables that hold different partsof the rule, the consultant may use the integrated configurationenvironment to edit the rule using its model counterpart. As part of theintegrated configuration environment, the proper syntax or availableparameters may be automatically displayed to assist the consultant inmaking his edits. Once the edit is complete in the model, the change maybe translated back to the underlying business application andautomatically applied, e.g., to the many tables that hold differentparts of the rule.

In another example, a consultant may Wish merely to determine theeffects that a potential change to the business application would have.Using a model of the business application, the consultant could try outthe potential change by applying it in the integrated configurationenvironment to see what the effects would be if the change werecommitted back to the business application.

A skilled artisan will appreciate that many other configuration toolswould be made available to users of a business application by displayingand manipulating a model of the business application using an integratedconfiguration environment consistent with the present invention.

Checking Validity of Business Applications

As described above, business applications often involve large, complexlegacy systems. Over time, these systems evolve to accommodate changingbusiness rules, user needs, etc. Each change to a business applicationmay affect many logic entities within the business application.Furthermore, changes to the business application can make an alreadycomplex system even more difficult to maintain. These difficulties arecompounded by the fact that table-based business applications do notallow the use of design and optimization techniques available in othertypes of systems.

For example, changing a processing rule may result in another logicentity, such as configuration data, being inconsistent with underlyingbusiness logic. However, because business applications are large andcomplex, the user making the change may be unaware that the logic entitynow contains a logic structure error. Traditional table-based businessapplications do not have a mechanism for identifying or optimizinginconsistencies in underlying business logic. Thus, many problems, suchas broken or circular links in logic entities, may be undetected in thebusiness application.

A number of well-known programming techniques may be used to optimizethe design of existing software code without altering the code'sbehavior. For example, a software debugger, such as Validity Check, TrueTime, or Bounce Checker may improve code by testing it and modifying thevalues of variables where necessary. Optimized code is generally easierto read and understand and more efficient to maintain.

Methods and systems consistent with the present invention enable the useof known software tools, such as debuggers, to optimize theconfiguration of a business application by eliminating inconsistenciesin underlying business logic of the business application. In oneembodiment, each logic entity in a business application may betransformed into a corresponding structure. A language tool, such as acompiler, may then be used to check the structural consistency of thestructures and flag identified logic structure errors. Although theobject-oriented language tool literally identifies problems, such asbroken links, in object-oriented code, it also identifies problems inthe underlying logic of a business application because the code modelsthe business application. For example, an object-oriented compiler mayidentify a circular reference within a branch of code. By correlatingthat branch of code with its corresponding logic entity in the businessapplication, the inconsistent logic entity may be identified. In oneembodiment, inconsistent logic entities in the business application maybe corrected after they have been identified using the model, and themodel translated back into business application entities that willfunction in the business application system.

For example, a debugging tool will optimize the structures, for example,by “repairing” circular links. However, the operation of the code willnot be affected. Once correction of identified logic structure errors inthe object-oriented code is completed, the object-oriented code may betranslated into corresponding business application logic structures. Asa result, the business application will reflect the improvements made byoptimizing the object-oriented code.

In one method consistent with the present invention shown in FIG. 13, abusiness application composed in a first programming format may beanalyzed by receiving a model representing the business application in asecond programming format (stage 1310) and processed by using a codeoptimization tool to identify logic structure errors (stage 1320).Identified logic structure errors may then be corrected (stage 1330) andapplied in the first programming format, to the business application(stage 1340).

Using CASE Tools to Verify Business Application

As described above, business applications often involve large and verycomplex table-based systems. To configure and implement a businessapplication, a company may need to employ highly trained consultants.Due to the complexity of traditional business applications, it may takeyears to configure an application for a single company. Businessapplications typically have limited range of development tools to assistin development of the business applications configuration.

Computer-aided software engineering (CASE) tools assist a softwaredeveloper in developing and maintaining software code. CASE tools enableusers to design and manipulate code, such as object-oriented code, in aneasy-to-understand manner. For example, data dictionaries anddiagramming tools aid developers in analyzing and designing softwaresystems. In another example, application generators may assist in actualprogramming of a system. Other CASE tools may assist with data modeling,reverse engineering, simulations, etc. Though CASE tools are availableto assist programmers in analyzing and designing traditional softwaresystems, such generic tools are not capable of being applied to a large,legacy system that might be customized to suit the needs of a singlecompany.

Systems and methods consistent with the present invention enable the useof CASE tools to analyze and verify the configuration of a businessapplication. By transforming business application structures intostructures, CASE tools may be used to verify the underlying businessapplication configuration. For example, CASE-tool-generated diagramsrepresenting business application layers may assist an architect of abusiness application in visualizing a matrix of a project. As a result,the architect of a business application may more efficiently design andoptimize a business process. For example, such diagrams may help a userto identify an amount of wagetypes, and how those wagetypes are related.In another example, simulation or modeling CASE tools may be used totest the effects of potential configuration changes in a businessapplication. In this way, CASE tools could be applied to assist aconsultant in configuring a business application or verifying anexisting business application configuration.

Systems and methods consistent with the present invention enablebusiness application consultants to generate and analyze the structureof business applications using tools from a CASE environment. Forexample, a developer may use a Modified Modeling Language (MML) tool tobuild a high level diagram of a logic entity, such as a business objectclass.

By transforming business application structures into structures,object-oriented CASE tools may be applied to generate similar businessapplication structures. For example, a user can write a new businessrule using familiar object-oriented code, and that code may be convertedinto logic business entities to apply the new rule in the businessapplication. As a result, users may configure the business applicationwithout worrying about its native format or structure.

In some embodiments, when business application structures are displayedusing object-oriented code structures, the business meaning of theobject-oriented code structures may also be displayed. This aids theuser in understanding a complex business application in the format offamiliar, easy-to-understand object-oriented programming constructs.

FIG. 14 is an exemplary flowchart of a process for analyzing andverifying an application configuration using CASE tools. In certainembodiments consistent with the present invention, a businessapplication composed in a first programming format is analyzed byreceiving a model representing the business application in a secondprogramming format (step 1410). The first programming format may be, forexample, a table-based format, and the second programming format may be,for example, an object oriented programming format. The model is thenprocessed using CASE tools to generate its structure, including, forexample, the structure of the business application configuration dataand rules (step 1420). In another example, processing may includegenerating a diagram of the model's object classes which represent logicentities within the business application. The generated structure of themodel may be analyzed to depict a structure of the business application(step 1430).

In certain embodiments, a table-based business application isrepresented by an object-oriented programming model. Because the modelappears to contain object-oriented code statements, traditional CASEtools may be applied to it for a number of purposes, such as designingnew structures (e.g., business application rules), testing proposedchanges (e.g., a new tax category in the business application), andsimulating a business application run (e.g., an end-of-month payroll runin the business application). Once these CASE tools have been applied tothe model, the results can be applied back to the business applicationto make appropriate modifications to the business application.

Comparing and Merging Business Applications

Large, complex legacy systems require almost constant updating andmaintenance to keep up with the changing business environment. Thesechanges may include, for example, software patches fixing technicalglitches or improving the usability or the performance of a businessapplication; new code to support changing business rules or evolvinguser needs, etc. For example, changing tax laws in one of the countriesin a payroll business application may require changing many businessrules within the application. Each change to a business application mayaffect many logic entities within the business application, possiblychanging an outcome, for example, an amount of calculated payroll.

Traditional table-based business applications do not have any simplemechanism for modeling changes or identifying changes between differentversions of a business application. A user attempting to compare twodifferent versions of a business application and identify, for example,different tables or differences in a code, would have to compare eachbusiness rule separately, one by one. Because the business applicationis large and complex, this process may be extremely time-consuming andrequire a user with extensive training. Even then, small but importantchanges may be hard to recognize in a large table-based application.

Methods and systems consistent with the present invention allow a userto compare different versions of a business application using a model ofthe business application. By transforming business applicationstructures into structures, such as object-oriented language constructs,individual differences between versions of the business applications maybe identified and displayed to a user, for example, on a user interface.

To aid users in identifying differences between different versions of abusiness application, multiple versions of a business applicationconfiguration may be stored in a database, such as a configurationcontrol database like CVS. Each version of a business application may bestored in a configuration control database as a transformedcorresponding object-oriented structure.

Using methods and systems consistent with the present invention, tocompare an updated version of the configuration of a businessapplication with its previous versions, a user may extract the latestcontrol version of a model of the application from a configurationcontrol database. Then, a user may extract the latest deployed versionof a business application from a server database containing the deployedversion of the business application, including recent updates, such as,for example, patches. The extracted deployed version may be transformedinto a corresponding object-oriented structure. Finally, the user mayextract a version of the business application including user-madecurrent changes from the user's storage space. The models of thebusiness application may be capable of autonomous existence from thebusiness application. Having all three versions represented in anobject-oriented structure may allow a user to perform a three-waycomparison between the object-oriented structure edited by the user andtwo retrieved versions copied from the configuration control databaseand the deployed server database.

Using methods and systems consistent with the present invention, a usermay automatically compare all three versions of the business applicationmodel in a visually enabled mode by, for example, selecting a “ShowChanges” button. As a result, business objects, for example, wage types,that differ between the three configurations may be displayed on an userinterface marked with an icon to show where changes have been made. Inone example, an icon may be shown to highlight each change and listvalues of the business object before and after the change.

Comparing the structures of the model's three different versions,object-by-object, may allow a user to identify, for example,configuration data (e.g., wagetypes), business rules, schemas, and otherlogic entities where changes have been made. In each instance, a usermay choose a value of the business object for preservation andsubsequent storage as a new version of the business application model.Thus, as a result of the three-way comparison, a new version of theobject-oriented structure may be created containing a user's chosenvalues for each business object.

When a user completes the three-way comparison and decision process, thenewly-created version of the model may be transformed into a newestversion of the business application. That version may also be tagged asthe “latest” and forwarded to a configuration control database forstorage and/or to a target business system for deployment.

FIG. 15 is a flowchart of a process for comparing and merging versionsof a business application using methods consistent with the presentinvention. A current version of a business application is determined byreceiving a first version, a second version, and a third version of amodel, such as an object-oriented programming model, representing thebusiness application (stage 1510). The objects of each of the first, thesecond, and the third versions of the object-oriented programming modelare compared (stage 1520) to identify differences between any objects inthese models (stage 1530). For each identified difference, adetermination is made as to which version of the model is to beassociated with the first version of the model (stage 1540). The firstversion of the model is then assigned as the current version of themodel (step 1550). Using methods and systems consistent with theinvention, the current version of the model may be translated back intothe business application format, thus creating a current version of thebusiness application.

Customer Support

As described above, OOP language tools, such as compilers, analyzers,optimizers, etc. can be used to find errors or problems in theconfiguration model of a business applications. Such errors or problemsmay include errors in relationships, calls, interactions, design, etc.associated with the modeled null functions.

FIG. 16 is a flowchart of an exemplary process consistent with thepresent invention. As shown in FIG. 16, a model representing thebusiness application composed in a second programming format isprocessed (stage 1610). Systems consistent with the invention may thendetermine, based on the processed model, a potential problem in thebusiness application (stage 1620) and identify the determined potentialproblem by displaying a marker in the model of the business application(stage 1630). In exemplary embodiments, the marker may be displayed inthe model at a location where the potential problem occurs. Furthermore,the displayed marker may be associated with information describing thedetermined potential problem.

User Interfaces

FIGS. 17 to 56 illustrate exemplary user interfaces consistent with theinvention for enabling a user to process a model representing a businessapplication, as described above with respect to FIGS. 1 to 16.

Consistent with methods and systems of the invention, a user interfacedisplaying all the relevant information on one graphical and productivescreen may be used. As shown in FIGS. 17 to 56, user interfacesconsistent with the invention may enable a user to easily navigatewithin an object-oriented structure from one object to another. The userinterface may provide an instant visual alert of a potential problem,for example, with a source code. The user interface may also provide anintelligent code assistance and wizards. For example, all the referencesto a selected object, such as a schema or a rule, may be instantlydisplayed facilitating an instant dependency analysis. In anotherexample, a user interface may have superior error detection andreporting capabilities, such as instantly reporting errors or enabling auser to find an exact error location just after one click.

Consistent with methods and systems of the invention, a user interfaceshown in FIG. 17 illustrates auto-complete capabilities in an IntegratedConfiguration Editor (ICE) environment. As shown in FIG. 17, the userinterface may list all the business objects and provides documentationfor each of them. The user interfaces may depict grouping of theprojects in ICE environment. The integrated configuration environmentmay include, for example, a series of windows displaying businessapplication entities as a hierarchy of projects, rules, and schema. Theenvironment may also include a model, such as an object-oriented modelof a business application object displayed together with documentationpulled from the business application.

For example, FIG. 18 depicts grouping of the projects defined by acountry, and FIGS. 19 and 20 depict grouping of the projects defined bya system and a client, respectively, which has the least possible amountof attributes allowing to enforce uniqueness for all managed objectswithin a project. For example, using three attributes as the minimum setof attributes to define uniqueness, as shown in FIG. 19, may allow thesystem to rearrange attributes and build hierarchies with betterworkspace organization. The user interface shown in FIG. 20 may depict alinear project layout when all key attributes are shown in a projectname. A little block with a cross inside appearing next to a projecttype may indicate an existing potential problem or an error. Forexample, a block next to Germany on FIG. 18, may indicate that an errorin object “Germany” exists.

Consistent with methods and systems of the invention, a user interfaceshown in FIG. 21 may depict an offline debugger or log replay. Having anability to see this screen may allow a user to look at dynamic andstatic views of payroll tables, full view of payroll steps, a sourcecode displayed at a current execution point, and debugging controls.

Consistent with methods and systems of the invention, a user interfaceshown in FIG. 22 may depict inter object relationships within a project.For example, a user highlighting processing class with value M003, suchas salary wage type, may result in displaying different rules referencedto that wage type.

Consistent with methods and systems of the invention, a user interfaceshown in FIG. 23 may depict one or more problems or errors encounteredwhen business application structures are transformed into structures. Ifduring the conversion an error occurred, the error may be marked as atask for the user to fix. For example, if the user typed in an invalidsyntax in a “RuleDPPF.java” module, a task of “Empty code” is listed forthe user to fix along with a complete description of the error, which inthis example is that “RuleDPP1 cannot be resolved.”

Consistent with methods and systems of the invention, a user interfaceshown in FIG. 24 may depict, in greater detail, one or more problems, orerrors, encountered when business application structures are transformedinto structures. If in FIG. 23 a user double clicks on a error, theschema where the problem exists is displayed for the user and theportion of the schema with the error is highlighted. When a cursor isplaced above the marker, a pop-up box may show the details of the error.For example, the user may be notified that the method P0171 isundefined.

Consistent with methods and systems of the invention, a user interfaceshown in FIG. 25 may depict all the errors encountered in when businessapplication structures are transformed into structures. Each error maybe indicated by a marker (here a rectangular flag) on the far right ofthe user interface identified by a code debugger applied to the model.When a cursor is placed above the marker, a pop-up box may show thedetails of the error, and a click on the marker takes the user to theexact location of the error within the schema. For example, in theschema “RuleW020.java,” errors are indicated by the marker on the rightside of the screen. If a user places a cursor above the markerindicating the error, the details of the error “RuleWRFI cannot beresolved” is shown.

Consistent with methods and systems of the invention, a user interfaceshown in FIG. 26 may depict one or more warnings encountered whenbusiness application structures are transformed into structures. Awarning may consist of informing a user that a part of a module may bereferencing a rule or value that is no longer used by the system. Thewarning is not an error and will not stop the conversion of the R3structures to the Java structures. For example, if within a module avariant is checked to determine whether it equals a certain value, i.e.,“processingclasses.ProcessingClasses04.Value8,” the system may informthe user that “The field ProcessingClass04.Value8 is deprecated,” inother words, ProcessingClass04.Value8 may not exist or is no longer usedwithin the system.

Consistent with methods and systems of the invention, a user interfaceshown in FIG. 27 may also depict a problem, or error encountered whenbusiness application structures are transformed into structures. Theerror is marked as a task for the user to fix with a description beinggiven under the “Problems” tab. For example, the error of “empty code”is listed as a task for the user in the module “RuleDPPF.java” and thedescription of the error is that “Rule9112 cannot be resolved.” Rule9112may also be highlighted in the user interface.

Consistent with methods and systems of the invention, a user interfaceshown in FIG. 28 may further illustrate details associated with aproblem, or error encountered when business application structures aretransformed into structures where a rule in the transformation may notproduce any result. For example, if the user clicks on the descriptionof the error, the user may be directed to the portion of the“RuleDPPF.java” schema where the error occurred. In this example, avariable “variant” is set equal to nothing; therefore the user may haveto enter a value to resolve the error.

Consistent with methods and systems of the invention, a user interfaceshown in FIG. 29 may also depict all the problems or errors whenbusiness application structures are transformed into structures in oneview. Each errors may be indicated by a marker on the far right of theuser interface. When a cursor is placed above the marker, a pop-up boxmay show the details of the error. If a user clicks on the marker, theuser is taken to the exact location of the error within the schema. Forexample, in the schema “RuleW020.java,” there are problems indicated bythe marker on the right side of the screen. If a user places a cursorabove the marker indicating the problem, the details of the problem“RuleWRFI cannot be resolved” is shown.

Consistent with methods and systems of the invention, a user interfaceshown in FIG. 30 may depict the object-oriented structure that hasencountered an error during the transformation of the businessapplication structures into the structures, and give a description ofthe error.

Consistent with methods and systems of the invention, a user interfaceshown in FIG. 31 may depict one or more evaluation classes within aproject. A user may select an evaluation class business object, such asevaluation class 02, “Wage type assignment for pay statement,” as shownin the upper center right pane with the tab labeled “Evaluation class.”By processing the OOP object model of the business application usingcommon OOP tools and methods, the system finds and displays all thebusiness objects that are related to or reference the selected “Wagetype assignment for pay statement” evaluation class 02 object, as shownin the bottom right hand pane with the tab labeled “References.”

Consistent with methods and systems of the invention, a user interfaceshown in FIG. 32 may depict an Evaluation class within a project in anR/3 view.

Consistent with methods and systems of the invention, a user interfaceshown in FIG. 33 may depict the specifications for an evaluation classbusiness object such as an Evaluations class within a project in an R/3view. For example, a user interface may depict the specifications ofEvaluations class “Wage type assignment for payroll account.”

Consistent with methods and systems of the invention, a user interfaceshown in FIG. 34 may depict a screen where one or more operations aredefined for one or more countries in an R/3 view. For example, theoperation “ADDW Add wage type to subsequent wage type” may be definedfor Canada, China, Denmark, Finland, France, Germany, and Great Britain.FIG. 35 is another user interface consistent with an embodiment of theinvention.

Consistent with methods and systems of the invention, a user interfaceshown in FIG. 36 may depict one or more processing classes within aproject, and the various operations that can be performed on eachprocessing class is also depicted. For example, the processing class“Cumulation and storage at end of gross part” is shown in the userinterface, and with a right click on that processing a menu is shownwhere a user may choose from one of many options such as “CopyProcessing Class.”

Consistent with methods and systems of the invention, a user interfaceshown in FIG. 37 may depict a Processing class within a project in anR/3 view.

Consistent with methods and systems of the invention, a user interfaceshown in FIG. 38 may depict the specifications for a Processing classwithin a project in an R/3 view. For example, a user interface maydepict the specifications of Processing class “Cumulation and storage oftime wage types.”

Consistent with methods and systems of the invention, a user interfaceshown in FIG. 39 may depict an R/3 outline view of a rule representationalong with the converted object-oriented code. For example, for thePayroll Rule “X015—Valuation of time wage types” the businessapplication outline is on the left hand side of the screen and themiddle of the screen shows the converted object-oriented code for thesame rule.

Consistent with methods and systems of the invention, a user interfaceshown in FIG. 40 may depict an object-oriented outline view of a rulerepresentation along with the object-oriented code. For example, theobject-oriented outline of the rule “$401—Store excess amount frompre-tax 4-01K to after-tax 401-K” is shown on the left side with theconverted object-oriented code for the same rule is in the middle of thescreen.

Consistent with methods and systems of the invention, a user interfaceshown in FIG. 41 may depict a rule in a business application view. Forexample, the rule “X013 Es Grouping” is depicted as an R/3 businessapplication.

Consistent with methods and systems of the invention, a user interfaceshown in FIG. 42 may depict a table instance of the rule in a businessapplication view. For example, a table instance of the rule “U013” isdepicted as an R/3 data structure.

Consistent with methods and systems of the invention, a user interfaceshown in FIG. 43 may depict an R/3 data structure schema, theobject-oriented code of that schema, and the various references wherethe schema is used. For example, the schema “$APO—reoccurringbenefits/Deductions and one time payments” is depicted along with thereferences that use the schema, which are “US00—Payroll Calculation” and“$US0—Payroll Calculation.”

Consistent with methods and systems of the invention, a user interfaceshown in FIG. 44 may depict a function within an R/3 data structureschema, the implementation of the function, and other schemas where thefunction is used. For example, the function “P0377” may be shown alongwith the implementation of the function in the middle of the screen andthe bottom right may show other schemas (ex: “BRB2,” “BGE2,” etc.) thatuse the function “P0337.”

Consistent with methods and systems of the invention, a user interfaceshown in FIG. 45 may depict a table within a project and all the rulesthat use that table. For example, the table “Output table” is depictedand under “References,” all the payroll rules that use the “Outputtable” are listed.

Consistent with methods and systems of the invention, a user interfaceshown in FIG. 46 may depict the object-oriented representation of R/3data structure features shown in FIGS. 47-52.

Consistent with methods and systems of the invention, a user interfaceshown in FIG. 53 may depict a wage type of a project. For example, thewage type “M003-Salary” may be displayed to the user. The references atthe bottom of the interface may show others schemas that use thisparticular wage type within the same project.

Consistent with methods and systems of the invention, a user interfaceshown in FIG. 54 may depict another example of a wage type of a project.For example, the wage type “1055—Premium Pay” may be displayed to theuser. The references at the bottom of the interface may show otherschemas that use this particular wage type.

Consistent with methods and systems of the invention, a user interfaceshown in FIG. 55 may show an object-oriented version of the R/3 datastructure “Wage type group” as shown in FIG. 56. Each wage type groupmay have one or more wage types associated with it. For example, thewage type group “0008 Basic Pay” may be associated with the wave types“SJ00 JS Hourly Wage, “2J20 JS Perfect perf bonus,” etc.

Data-Focused Debugging and Tracing Capabilities

Embodiments of methods and systems consistent with the invention enabledata-focused analysis of an application by reorganizing executioninformation generated by an application into groupings associated withthe data objects used by, or representing, the application, anddisplaying or otherwise using the reorganized information for analysis,debugging, execution tracing, etc. of the application. Embodimentsconsistent with the invention reorganize and present applicationexecution information from the data standpoint instead of from theexecution sequence standpoint.

Traditionally, to locate, analyze, and/or debug a problem with anapplication program, a programmer steps through the program, operationby operation, and monitors changes in the data objects, such as changesin the value of a data object, variable, etc. This is often done as theprogram executes under the control of a debugger, or in some systems,after execution using a data event log recorded previously as theprogram executed. For example, the SAP R/3™ system generates a verydetailed sequential log containing information about each operationexecuted by an application and each data object(s) affected by eachoperation.

More often than not, a problem manifests itself in, and can be traced byobserving the manipulations of, a data object(s). For example, a problemin a business application that causes an incorrect output value in adata object that holds a paycheck amount may be traced and eventuallysolved by first analyzing each operation that manipulates the paycheckamount data object. But even with a modern debugger using helpfulfeatures such as breakpoints and watchpoints, analysis and debugging bywalking through the execution operations of an application is extremelytedious, difficult, and time-consuming, especially for large, complexapplications which execute thousands, or hundreds of thousands, of linesof code because most of the execution flow operations are unrelated tothe data object(s) associated with the problem. In a system that relieson execution-flow data event logs for debugging, tracing, etc., such asan SAP R/3™ system running business applications for largeorganizations, it is even more difficult and time consuming to find theexact place where a particular problem or error occurs with an object bytracing through thousands and thousands of operations in execution orderand examining the recorded values for every data object involved becausethere are few helpful debugging features.

For example, FIG. 65 illustrates an exemplary screen from anexecution-flow log, such as may be generated for a business applicationrun on an R/3™ system. The entire execution log may be hundreds, orhundreds of thousands, of screens long organized in chronologicalexecution order. In this example, the log information is displayed as atree structure 6500 with operations represented as nodes arranged inexecution order 6505 in the tree, and a user may drill down into certainnodes (i.e., the nodes with the plus sign “+” in the folder icon) to seethe suboperations 6510 (e.g., the lines of code) that make up theoperation in execution order.

The illustrated execution log records the inputs, processing, andoutputs of each operation or function. For example, for operation 6515,which creates valuation bases (division), the execution log includesinformation about the input 6516, processing 6517, and output 6518 ofthe operation. A user may drill down to see the details of informationrecorded about each of these. For example, a user may select the“valuation basis 1” processing operation 6520, and as shown in FIG. 66,the system will display detailed execution log information 6605 aboutthe suboperations that were executed in performing the parent operation.As shown in FIG. 66, several suboperations that are part of Rule X013were executed for the “valuation basis 1,” processing operation 6520. Asmentioned above, a programmer or other user trying to debug a problemusing such an execution log faces the long and difficult task of walkingthrough the execution log and drilling down to examine each object orrule individually, as shown in FIG. 66, to determine what operation(s)were performed on each object and how they affected the object.Moreover, for a data-rich application, such as a payroll applicationthat generates many data objects and much information for each employeeamong hundreds or thousands of employees, it is very difficult toidentify the exact operation(s) that caused a problem using an executionlog such as is pictured in FIGS. 65 and 66.

Exemplary methods and systems consistent with the invention enabledata-focused analysis of an application by reorganizing the sequentialexecution information generated for an application, such as theinformation used to generate the execution log display illustrated inFIGS. 65 and 66, according to data object. For example, as shown in FIG.70, which is an exemplary embodiment of a process consistent with theinvention, an application program is run, creating an execution dataevent log according to the execution flow of the program (stage 7005).In one embodiment, the process is performed by a system including atleast one computer. In some embodiments, the application is a businessapplication, such as an accounting application run on an SAP R/3™system.

In one embodiment, as the application program runs, it generates dataand/or data objects. The operations that generate the data objects anddata are recorded chronologically (i.e., in the order they are executed)in the execution data event log along with the generated data andobjects. In some embodiments; the application program itself creates theexecution flow data event log, while in other embodiments, a separateprogram creates the execution log. The data and data objects may includeinitial variables, results, or objects; intermediate variables, results,or objects (e.g., results used in future calculations); final variables,results, or objects; etc. In some embodiment, the execution log may bevery extensive—for example, the SAP R/3™ system execution log recordseverything that happened during execution at every code line orconfiguration point. In other embodiments, the execution log may containless information.

In the process shown, the system next organizes the entries in the dataevent log according to the data affected by each entry (stage 7010). Inone embodiment, the system categorizes the log information according todata object classes, associating log entries where a data object of agiven class was accessed (e.g., created, deleted, changed, read, etc.)with a category for that given class.

In the process shown, the system then assigns an indicator(s) to eachlog entry to show how the entry affected the data object (stage 7015).For example, one indicator or marker may signify that the entry createda certain data object, a second indicator may signify that the entrychanged the contents or value of the data object, a third indicator maysignify that the entry deleted the data object, a fourth indicator maysignify that the entry read the contents of the data object, etc.

After all the entries are organized according to data object andassigned indicators, the system displays the reorganized data logentries as organized by data object (stage 7020). In other words, thesystem displays all the log entries caused by execution of operations inthe application code that affected a data object, sorted or indexed byobject instead of in the original execution order.

Using the data-focused, reorganized, execution log information toanalyze or debug a problem with the application, a user may, instead oftracing the execution flow of the application through accesses tomultiple data objects that are not of interest, concentrate on only therelevant data object(s) and the life cycle events that affected therelevant object(s). Life cycle events include where and how in anapplication (e.g., what operations) a data object was created, whatoperations modified the data object, what operations accessed the dataobject, what operation deleted a data object, what operation moved orcopied a data object from one place to another or to another instance,etc.

One of ordinary skill will recognize that stages may be added to,deleted from, or modified in the process shown in FIG. 70 withoutdeparting from the scope of the invention. For example, stages 7010 and7015 may be combined into a single stage.

FIG. 57 shows an exemplary user interface with a data-focused display ofdata event log information organized according to data object, such asmight be used in connection with stage 7020 of FIG. 70. In oneembodiment, the user interface is an interactive browser that includesstandard abilities such as scrolling, mouse control, text searching,etc. As shown in FIG. 57, the execution log information is reorganizedand displayed so that data classes (for example, data classes 5705,5706, and 5707) are the top level of organization and the operations(for example functions 5710, 5711, and 5712) that affect instances ofthese data classes are organized underneath in execution order, allowinga user to see exactly how the objects of each data class have beenaccessed and manipulated during execution of the application.

More specifically, in the embodiment shown in FIG. 57, “M003” is a dataobject class 5705, which may, for example, be a wagetype which carriessalary information for an employee (this example is from an SAP R/3™payroll business application). The function UBDO.WPBP 5710 is the firstoperation from the payroll application that use data class “M003”5705—the function creates an instance of data class “M003” 5705 forfurther processing, for example, using salary information for anemployee input into the system by human resources personnel. Thefunctions UBDO.P0014 5711, UT00.PIT 5712, and so on were executed nextand performed further operations using data class “M003” 5705, such asusing the “M003” salary data class 5705 to calculate net pay, gross pay,etc. for an employee.

Similarly, “/001” is another data class 5715. As shown, the functionUT00.PIT 5716 is the first operation from the payroll application thatuses data class “/001” 5715, creating an instance of this class (e.g.,an R/3™ wagetype) for use later. Next, the “/001” data class 5715 wasprocessed by function UT00.PIT 5717 (an R/3™ rule). A user may drilldown into this rule to see the exact operations 5720 that were executedaffecting an object of data object class “/001” 5715. A user may furtherdrill down into an operation and see the exact values of instances ofthis particular class with its values 5725—with how the values changed5726. Thus, a user interested in analyzing what happened to the dataclass “/001” 5715 during execution of an application does not have totrace through hundreds or thousands of operations in an execution log tofind the ones related to the data class “/001” 5715 because all therelated operations (e.g., operations that affected an instance of thisclass) are organized and displayed in association with the class.

In one embodiment consistent with invention, the system may assign anindicator or marker to each entry in the reorganized data event log toshow the type of action performed in association with the entry on thedata object, such as reading the data object, creating the data object,modifying the data object, deleting the data object, copying the dataobject, etc. For example, as shown in FIG. 57, an indicator orindicators 5730 may be displayed with each entry to indicate the actionthat occurred, such as a plus sign (+) to indicate creation of a dataobject or object attribute, a minus sign (−) to indicate deletion of adata object or object attribute, a tilde (˜) to indicate modification ofa data object or object attribute, and no indicator to indicate readingof a data object or object attribute, among others.

In one embodiment consistent with the invention, the system may assignindicators to each object based on an evaluation of execution data eventinformation. For example, referring for a moment to FIG. 65, using theinformation from the execution log, the system may compare the dataobjects input 6516 and output 6518 for a function or process 6517, andassign an indicator accordingly. For example, if a data object exists inoutput 6518 that did not exist in input 6516, then the system assigns acreation indicator for that data object to function or process 6517. Foranother example, if a data object has value X as input 6516, and adifferent value Y as output 6518, then the system assigns a modificationindicator for that data object to function or process 6517.

In one embodiment, as shown in FIG. 57, indicators may propagate upthrough levels of the data-focused display, so that classes display theindicators of their subclasses, which display the indicators of theirassociated functions, which display the indicators of their constituentoperations, etc. The indicators shown in FIG. 57 are merely forillustration. A skilled artisan will appreciate that many other meansand methods may be used to indicate access, creation, modification,deletion, etc. of a data object.

FIG. 61 shows another exemplary user interface with a data-focuseddisplay of data event log information categorized by data object. Asexplained above with respect to FIG. 57, the reorganized data event logshown in FIG. 61 provides a data-focused view of the application thatallows a user to easily see and examine every point executed by anapplication that processed a data object of a given class.

In the embodiments shown in FIG. 57 and FIG. 61, the data-focuseddisplay is the result of shuffling the information in an execution flowlog to group it by data object classes so that a user can easily findthe places where the data objects of a given class have been used andsee the actual values stored in the instances. This display allows auser to efficiently trace how a data object is changed during executionof an application, determine where a problem occurs, and debug theapplication.

FIG. 71 is a flow chart of an exemplary process for creating adata-focused execution log consistent with one embodiment of theinvention. As shown, the process begins with recording an execution flowlog of an application (stage 7105). Examples include the table-basedexecution flow log recorded by an SAP R/3™ system when an application isrun, such as is shown in FIG. 65. In the R/3™ log example, the executionlog is basically a collection of multiple tables with information abouteach execution operation. For understandability purposes, as shown inFIG. 65, the log may be displayed as a tree structure which mimics theexecution flow (e.g., showing nesting levels as functions call otherfunctions, etc.). The nodes of the tree show the data involved or beingprocessed for a particular execution flow element. For example, afunction 6515 is displayed as a node and under this node are displayednodes for the different types of objects entering this function andexiting this function.

In one embodiment, the execution flow log includes an entry (e.g., aline) for each operation or code line executed by the system whenrunning the application, and records the values of the input and outputof data objects before and after execution of the operation. Otherembodiments include execution flow logs with coarser levels of detail.

Referring again to the embodiment of FIG. 71, the process next convertsthe execution flow log into XML statements (stage 710). At this stage,the information in the log is still linear according to the executionflow of the application. In this embodiment, XML is used as a commonformat to start from for the stages that follow in the process. That is,execution flow logs from many different sources (applications) of manydifferent types and formats may come from stage 7105, and convertingthem to XML format allows the use of the same means to perform the laterstages of the process.

Next, the process identifies data objects used by the application andrecorded in the XML execution log (stage 7115). In one embodiment, theprocess knows all the possible data object classes used by theapplication in advance. In this embodiment, the system implementing theprocess may analyze the XML log to identify which of the possible dataobjects or classes were actually used in the recorded execution run ofthe application, and then use the identified objects or classes to latersort or reorganize the log information. In another embodiment, thesystem implementing the process may analyze the XML log to determine thedata object classes used by the application without any advanceknowledge of the possible classes.

As shown, the process next reorganizes the XML log entry informationaccording to the data object(s) affected by each entry (stage 7120). Inone embodiment, the XML version of the execution log is read into memoryfor faster processing and grouping algorithms are employed to reorganizethe log entries by identifying the class(es) of the data that is beingused by each entry, and grouping each entry under that class(es). Inother words, the log entries are reshuffled or sorted from the originalexecution flow organization into a data-focused organization. In oneembodiment, if an entry affects more than one data class, it may becopied or flagged so as to belong to the groups corresponding to each ofthe more than one data class.

In one embodiment, the log entries contain information indicating howthe entry affects the objects of each data class that it uses. Forexample, as shown in FIG. 65 and explained above, the affect of anoperation may be determined from information regarding what data objectsand values are input 6516 and output 6518 from a function 6515. Afterthe affected object(s) are determined from this information, thefunction is grouped under those objects' data types. In one embodiment,the reorganized entries are grouped in sequential execution order underthe appropriate data object or class. In one embodiment, the dataclasses themselves may be organized chronologically according to theorder in which an instance of the class was first created duringapplication execution.

Referring again to FIG. 71, in stage 7125, the process provides thedata-focused, reorganized log for a user to interact with. For example,as shown in FIGS. 57 and 61, the data-focused log entries may bedisplayed using an interactive browser.

One of ordinary skill will recognize that stages may be added to,deleted from, or modified in the process shown in FIG. 71 withoutdeparting from the scope of the invention.

FIG. 68 is an exemplary flowchart of a process for analyzing theexecution of an application consistent with an embodiments of theinvention. As shown in FIG. 68, to begin, the top level data types usedby the application are displayed (stage 6810). For example, in oneembodiment shown in FIG. 62, a list of data classes 6205 used by theapplication may be displayed in an interactive browser window (ignoringfor this example the displayed items that are not part of 6205).

Next, the process may receive a data identifier (stage 6830) thatidentifies the data of interest. For example, a user may identify databy typing the name of a data object, attribute, or class used by theapplication into a pop-up search window. The user may select the dataclass based on a suspected problem with the application, among otherreasons. For example, if an employee receives a pay stub or other salaryrecord with an error, such as no taxes withheld, he may report theproblem to his employer's human resources department, who may in turncontact a consultant, analyst, programmer, etc. after determining thatthe problem seems to lie in the application program. Based on thedescription of the problem, the analyst may enter the name(s) of thedata class(s) involved in calculating withheld tax during stage 6830 asa logical place to begin analyzing the problem.

Based on the received data identifier, the process displays the toplevel of the desired data, such as the identified data class or dataobject (stage 6840). In one embodiment, the process may display a listof one or more top level data classes that correspond to the receivedidentifier criteria, such as the list of data classes 6205 shown in FIG.62 (again ignoring for this example the displayed items that are notpart of 6205). In one embodiment, the process may also display lifecycleindicator(s) 6210 with each top level data class, which indicate how thedata objects of the class were accessed during execution of theapplication. For example, as described above, a plus sign (+) may beused indicate that an object was created, a triangle or delta (Δ) may beused to indicate that the data in an object was modified, etc.

Next the process of FIG. 68 allows the user to drill down to displayexecution events and operations, related data objects, etc. thataffected data objects of the identified type during execution (stage6850), which enables the user to efficiently trace, analyze, and debugthe lifecycle of a particular data object in the application program.For example, as shown in FIG. 62, if a user was interested in examiningdata class “/002 Valuation basis 2” 6215, the user could click on thedisplayed item to drill down and display all the functions 6220 thataffected data class “/002 Valuation basis 2” 6215 during execution ofthe application. Similarly, as described above, the user could alsodrill down into each function to see the operations (e.g. operation6221) executed by the functions related to the identified data class,and drill down into the operations to see the values of the data objects(e.g. data object values 6222) as they were processed during applicationexecution. As shown in the embodiment of FIG. 62, the process maydisplay lifecycle indicators (+, −, Δ, etc.) with the function andoperation level display entries. Using the described displays andprocesses, a user may easily trace through the lifecycle of any givendata object in an application without the distraction of informationrelated to the other data objects in the application.

In one embodiment consistent with the invention, a user may edit afunction, operation, data object, attribute of a data object or class,etc., using a display like FIG. 62 and the changes may be transferred toa model, such as an object-oriented model of the application, which mayin turn be transformed into a working version of the application, asdescribed in previous sections.

One of ordinary skill will recognize that stages may be added to,deleted from, or modified in the process shown in FIG. 68 withoutdeparting from the scope of the invention.

One of ordinary skill will also recognize that although some exemplaryembodiments are described in the context of the SAP R/3™ system and itsapplications, the principles of the invention may be applied to manysystems and applications. For example, many applications (e.g., a Java™program application) may be configured to generate, (or utility programscan be used to generate), execution flow logs (or live executioninformation) containing information regarding affected data classes andthe lifecycle of data objects during application execution. And manyapplications, especially those written in object-oriented languages, maybe easily analyzed to determine the data classes and objects used. Withthis information, systems and methods consistent with the invention canproduce data-focused execution information consistent with theinvention.

Applying Intelligent Filters

Typically, users configuring large, complex business applications mustspend large amounts of time identifying and correcting errors caused by,for example, customization of the application. For example, consultantsconfiguring a business application for a company may create customfunctions, create new classes or objects, copy classes or objects, etc.to customize the business application according to the company's needs.If during the customization process the consultant makes an error, suchas copying a business object into another class but forgetting toinclude an attribute of the object into the copy procedure, theapplication will not run correctly. For example, if a user misconfiguresthe currency type attribute of a net pay object in a payrollapplication, the system may default to a type of currency that isincorrect for the business (e.g., default to U.S. dollar for a Canadianbusiness). The resulting paycheck amounts will be corrupted when thepayroll application is run, and as a consequence, some employees may beoverpaid or underpaid.

In conventional systems, to determine the source of such an error, auser would need to methodically examine a log of executed actions,operation by operation, to search for the error (e.g., a missing objectattribute). For example, in typical table-driven systems, a consultantmay have to search for an error (e.g., an incorrect or missing currencyattribute) in each relevant table. This is often done as the programexecutes under the control of a debugger, or in some systems, afterexecution using a data event log recorded previously as the programexecuted. For example, the SAP R/3™ system generates a very detailedsequential log containing information about each operation executed byan application and each data object(s) affected by each operation.

The consultant would need to determine each relevant table using theexecution log, examine each relevant table, look for the appropriateattribute within each table, and then within the attribute, look for theabsence of the correct data, a process which may be extremely timeconsuming, tedious, and difficult to perform. Even with a moderndebugger using helpful features such as breakpoints and watchpoints,analysis and debugging by walking through the execution operations of anapplication is extremely tedious, difficult, and time-consuming,especially for large, complex applications which execute thousands, orhundreds of thousands, of lines of code because most of the executionflow operations are unrelated to the data object(s) associated with theproblem. In a system that relies on execution-flow data event logs fordebugging, tracing, etc., such as an SAP R/3™ system running businessapplications for large organizations, it is even more difficult and timeconsuming to find the exact place where a particular problem or erroroccurs with an object by tracing through thousands and thousands ofoperations in execution order and examining the recorded values forevery data object involved because there are few helpful debuggingfeatures.

Exemplary methods and systems consistent with the invention enabledata-focused analysis of an application by filtering a reorganizeddata-focused log of the sequential execution information generated foran application. In one embodiment, the system may include apreconfigured intelligent filter that may be used to filter adata-focused log based on certain object(s) and including the operationsthat affected the object(s). For example, a user may select an option(e.g., the triangle or delta (Δ) button shown in FIG. 61) toautomatically filter the data-focused log of FIG. 61 using thepreconfigured intelligent filter. As a result of the automatic filter, auser interface may automatically display only those objects that werechanged, deleted, etc. during execution, as shown in FIG. 62, along withoperations that changed those objects. In another embodiment, thefiltering may pull the only operations that acted on objects specifiedby filter parameters, as described in more detail below. In anotherembodiment, the filter may pull only the operations that affectedspecific data objects where thresholds associated with object attributesexceeding a specified range (or with the range, or below the range,etc.) as discussed in more detail below.

In one embodiment, systems and methods consistent with the presentinvention allow a user to filter application execution informationassociated with specific data objects to identify lifecycle events anduse the filtered execution information to expose such errors. Forexample, the user may filter execution information to see all dataobjects containing salary data with an amount reaching more than onemillion dollars, which may, in the user's judgment, indicate an error(e.g., that an incorrect currency type was configured for the company'spayroll application.)

FIG. 69 is an exemplary flow chart illustrating a method for applyingintelligent filters to application execution information. A filter iscreated (step 6910) and displayed to a user, for example in a graphicaluser interface. In one embodiment, a user interface such as an ICE mayallow a user to create a customized filter to identify lifecycle events.

Next, the user may specify the parameters of the filter (step 6920).Alternatively, the user may use default parameters or a preconfiguredfilter, as discussed above. Referring for a moment to the embodimentshown in FIG. 63, for example, a user may enter parameters by dataobject or wagetype (“Search Wage Type” 6330), function (“SearchFunction” 6335), or operation (“Search Operation” 6340). As shown inFIG. 63, in one embodiment, the user may specify various filterparameters, which may be object attributes such as a wagetype name,number, rate, rate currency, amount, or amount currency, by selectingcheckbox(es) 6301 associated with the desired filter parameter(s).

In one embodiment, as shown in FIG. 69, the filter may also acceptspecific thresholds or other values for each filter parameter (step6930). For example, as shown in FIG. 63, a user may search for specificwagetype objects by selecting a parameter 6305 “Rate” with a threshold6310 equal to 0, a parameter 6307 “Number” with a threshold 6308“greater than 25,” and a parameter 6315 “Wage Type Name” with a value6320 equal to “/844.” The filter parameters, thresholds, and valuesshown in FIG. 63 are merely for illustration, and a skilled artisan willappreciate that many other means and methods may be used to specifyfilter parameters, thresholds, and values.

As shown in FIG. 69, once the filter parameters and thresholds aredefined, the filter may be applied to application execution information,such as a data event log (step 6940) to retrieve business objectsaccording to the specified filter parameters and thresholds. In oneembodiment, the filter may be applied to a data-focused log, such as thereorganized data event log of FIG. 61, which is described above. Thefilter may be used to focus the log, extracting the objects relating tothe specified parameters and thresholds to create a filtered data eventlog.

The user may access the filtered data event log (step 6950). As shown inFIG. 64, for example, a graphical user interface that is part of an ICEmay display the filtered data event log 6400. Filtered data event log6400 may include only those objects relating to the requested filterparameters and thresholds, so that a user does not need to sort througha vast amount of data. For example, the ICE displaying filtered dataevent log 6400 only includes objects relating to the wagetype named“/844” with a “number” greater than 25 and a “rate” equal to 0, asspecified by the filter of FIG. 63.

In one exemplary embodiment, filtered data event log 6400 may be sortedchronologically, so that the user may see operations on an object inorder of execution. In another exemplary embodiment, filtered data eventlog 6400 may identify the developer who modified, accessed, created, ordeleted an object or class. In yet another exemplary embodiment,multiple filters may be created, applied, stored, shared, and re-used. Auser may also repeatedly modify filters using, for example, the userinterface of FIG. 63. A skilled artisan will appreciate that many othermeans and methods may be used to create and modify filters.

Providing an Interactive Business Application Configuration Environment

Most business applications can perform many different types of functionsand operations, some of which may not be appropriate or absolutelynecessary for the business using the application. Consequently, abusiness application may need to be configured or customized for theneeds of the business. For example, a German company using a payrollapplication to create monthly paychecks for part-time, non-salariedemployees may need a different configuration for the payroll applicationthan an American company using the application to create weeklypaychecks for full-time, salaried employees.

Additionally, some business applications are simple to configure, butare not practical for different company's needs. For example, a simplepayroll application may have a configuration environment that includes auser interface with only a few check boxes, so that it is onlyconfigurable to print standard paychecks for salaried employees who livein one area of the country. One disadvantage of these simple businessapplications is that they are not adjustable. For example, simplebusiness applications could not be configured to print paychecks fornon-salaried employees in another state.

Other, more complex business applications, as discussed above, ofteninvolve large, table-based systems and evolve over many years asbusinesses grow and change. One advantage of these more complex businessapplications is that they may be configurable for many types ofcompanies, offices, employees, and different countries. Unfortunately,one disadvantage of more complex business applications is thatfrequently, they cannot be easily configured (e.g., simply by usingcheckboxes in one interface) because the systems are too complex. Due tothe complexity of these business applications, it may take years toappropriately configure the business application for a company.

Because of their legacy nature and highly customized usage, complexbusiness applications typically have limited configuration tools toassist in the configuration and maintenance of the applications. Typicalconfiguration environments are not integrated with the businessapplication, so a person modifying the configuration of the application(e.g., a consultant) may not see the effect of a change until themodified system is run. For example, in the SAP R/3™ system or in otherapplications, option screens may be available to a user to configure theapplication. For example, a user may need to configure a businessapplication for a company, but may not immediately be able to determinewhich objects may be affected by the change in the underlying businessapplication, in part because business objects in the application mayhave been created by another developer. With hundreds or thousands oflines of code, and with hundreds of different screens to display eachsmall section of code affecting the business application, a user mayhave great difficulty understanding and keeping track of therelationships between objects that could be affected by any singlechange to the system. Thus, users may need specific tools to configureapplications, and traditional tools, such as form windows with parametercheck boxes, are not suitable for configuring complex businessapplications.

Further, different programmers may develop custom tool sets orconfiguration screens in their own ways, so that configuration screensand tools created by different developers are not consistent throughoutthe system. The programmer or consultant who configures an applicationafter development (i.e., the person who uses the screens) may not havethe necessary insight into, or knowledge of, the relationships betweenthe underlying business objects, classes, functions, etc., to properlyconfigure the application.

For example, as discussed above, in typical table-driven businessapplications, a user needs to understand relationships between thetables before he can configure the application. Using tools such as anexecution log, the user may see a list of tables or rules, as shown inthe R/3™ log of FIG. 65 and as described above. However, the log may notshow a table's relationship to other tables, rules, schemas, etc. Whenconfiguring a business application, the user may manipulate or affectthousands of tables, hundreds of rules, hundreds of schemas, andhundreds of other parameters that affect the execution of theapplication and the final result. Using existing tools, it may bevirtually impossible for a user without prior knowledge of the system toexamine every one of the tables, rules, schemas, and parameters relevantto a change individually, and determine their integral relationshipswithin the business application's configuration.

For example, turning to FIGS. 32-35, a user configuring a table-drivenbusiness application would need to examine each table or log of tablesseparately, to begin to resolve the relationships between the tables.The user would have to use each screen separately to configure, forexample, a wagetype as shown in FIGS. 32-33, or a rule operation, asshown in FIGS. 34-35. Since each of these screens presents very littleinformation, and is limited to just the one screen, the user cannot tellthat the tables, rules, attributes, operations, etc., are actuallylinked to, interact with, affect, depend from, etc. other tables, andthe user cannot see that changes made to one object affect another.Further, in a table-driven configuration environment, a user has nocentral viewpoint to see an overview of the tables in the application.In SAP's R/3™ system, for example, an IDE is built in, and a developercan manipulate the source code and structure of the program, such as aparticular table's content. However, a wagetype, for example, is storedin twenty tables, so a consultant using the IDE cannot see the bigpicture or the relationships between the tables. A consultant whoconfigures a company's R/3™ system, or another table-driven businessapplication, must have his own understanding of how each table in thesystem relates to other tables, because the configuration environmentdoes not help the consultant to determine those relationships.

When the table-driven business application is transformed to a model,such as an object-oriented model, however, a user (e.g., a consultant)may more easily configure the application, because the relationshipsbetween objects may be enforced, managed, and displayed using a single,integrated configuration environment (ICE) that operates on the model.Integrated display environment capabilities may be made available to theuser to configure the business application, and may provide a singleview to the user.

For example, in FIG. 36, a user can see several panes within one windowshowing relationships between objects. As shown in FIG. 36, a userinterface with object-oriented elements of a business application areintegrated and presented in one configuration environment. Using thisICE display, a user configuring the modeled application can see whatobjects are interrelated and affected by his changes because the modelincludes the interrelations between objects. In contrast, in atable-driven business application, it is virtually impossible for a userto determine the relationships to other tables from individualconfiguration screens, as shown in FIGS. 32-35.

To assist in the configuration and management of such businessapplications, systems and methods consistent with the present inventionenable a user to configure and maintain business applications using anICE, customizing the application for a customer's needs.

In one embodiment, the ICE is implemented using a platform designed forbuilding an integrated development environment (IDE), such as theEclipse Platform, which is an open source community project maintainedby the Eclipse Foundation. As described above, an IDE is a type ofcomputer software that assists computer programmers to develop software.IDEs enable users to design and manipulate code, such as object-orientedcode, in an easy-to-understand manner. An IDE may include multipleprograms that are run from a single user interface. For example,programming languages often include a text editor, compiler anddebugger, which are all activated and function from a common menu. OtherIDE tools may include a version control system, a graphical userinterface (GUI) tool, a class browser, an object inspector and a classhierarchy diagram, for use with object-oriented software development.IDEs are available for specific programming languages, for example, aVisual Basic IDE, or for multiple languages, for example, an EclipseIDE. In this way, source code can be re-factored, viewed in the editor,renamed, etc.

In one embodiment consistent with the invention, an ICE is aconfiguration environment that may be used like an IDE to configure abusiness application for a specific company's needs. FIG. 73 is anexemplary flowchart that illustrates a process 7300 for using an. ICE toexpose a business application object and its relationships to otherobjects. The ICE may specify the tools available for use with anapplication model. For example, an editor may be associated with objectsin the underlying business application, actions may be associated withthe objects, and an interface may be associated with objects to displaythem to a user (step 7310). As shown, a user may select a type ofbusiness object, such as a rule (step 7320), and the ICE may determinethe object's relationships to other objects or rules (step 7330). Forexample, the ICE may determine that object 4105 “0170—Flexible SpendingAccounts” as shown in FIG. 44, is related to “RBE2—Benefits Secondcall,” which is related to “Payroll Schema,” which is related to“USA.rna.800.” The ICE may display or make available a set ofconfiguration options for the selected object (step 7340). For example,turning back to FIG. 36, the ICE may show configuration options such asoption 3605 “2—Eliminate wage type” for processing class 20. Next, theICE may receive a user's selection for a configuration change (step7350). After receiving the selection, the ICE may dynamicallyrecalculate the model including the effect of the change on all relatedobjects, and display the effect of a potential change (step 7360).

In one embodiment, the ICE integrates and displays a businessapplication or a model of the business application using a single,interactive display, allowing a user to configure a model that has beenextracted from the business application and understand relationshipsbetween objects used in the business application. The interactivedisplay may simplify navigation from one object to another object andmay allow a user to validate different aspects of a configuration.

The user may configure a model using the display by, for example,creating a new rule object. Changes to the model, however, do notnecessarily affect the actual business application. Thus, the user maypreview the potential effects of the new configuration without changingthe modeled business application. For example, the user may see how achange to one rule may affect various objects within the businessapplication. In one embodiment, if the user is satisfied with thechange, the user may then apply the new or modified rule in the entirebusiness application. In another embodiment, if the user accepts thechanges, the underlying code may be automatically updated with thechanges. In this way, users may easily analyze, test, and manipulate allaspects of a business configuration using an integrated configurationenvironment, without immediately affecting the underlying source code.

In a payroll business application, every rule, every object, everyschema, and everything else may include a country attribute. The countryattribute may not have been originally programmed to be enforced, but auser may designate the attribute as enforced, see the effect thedesignation would have on the business application using the ICE, andthen apply the change. In another example, a user may want to changeparticular attribute's range of values from 0 to 9 to 0 to 6. In typicalsystems, a consultant would have to write a special program to test theeffect of this change. The ICE may immediately display the specificrules that would be affected by this change, so that a consultant maycheck relationships between objects, and immediately test a modificationto an object in the business application, without affecting theunderlying code.

In one embodiment, systems and methods consistent with the presentinvention also provide a consultant with the capability to build acustomized user interface for the configuration by combining differenttypes or objects, or different views for a particular task. For example,a user may choose which objects to view and manipulate at the same time.The user may set up one viewing pane to see references to a particularobject when the object is displayed in another pane. For example, whilea user is configuring a rule, the user may at the same time see theobject(s) that may be manipulated with the rule. In this way, a userconfiguring an application may have a tool set similar to that of a codedeveloper in an environment that understands the meaning of theconfiguration objects. So, a consultant who develops the configurationhas features that developers have in an IDE, such as auto-complete,instant reference resolution, error recognition, and others, all in asingle integrated environment. The ICE may act as a guide for the user,who may click on an object and see how it is connected to other objectsor rules.

In one embodiment, the application model used by the ICE may beseparated from the actual application that it represents. The model mayact as metadata of the application. Using the ICE, a consultant canmanipulate configuration aspects of the application without affectingthe actual application itself.

In one embodiment, the ICE extends the IDE by including the actualbusiness meaning of the objects that are exposed. With an IDE, a userworks at the code level, to, for example, refactor code, manipulate thecode, and show the code. An ICE operates at the level of the businessobjects used for the particular application, so that a user is nottrying to optimize the code representing a wage type, but insteadchanges or configures the wagetype's values for business purposes. TheICE allows a consultant to configure a business object itself, and tosee how the configured object relates to other objects in theapplication.

In one embodiment of an ICE, as shown in FIG. 36, every object may bedisplayed, and each object may be shown in a single view. For example,for the data class 3605 “20—Cumulation and storage shown at end of grosspart” shown in FIG. 36, a form may display the objects of data class3605 themselves, so that a user may modify the objects themselves.Moreover, while a user is changing different aspects of an object (e.g.,a adding a field, or adding a value), the ICE can automatically producethe massive updates of the underlying model.

In one embodiment, the ICE may be used to configure an existingapplication for a specific use, such as modifying a company's payroll.For example, for an SAP R/3™ payroll application, the ICE may displaychoices for a consultant to modify various wagetypes (e.g., to change acountry parameter for an office's payroll.) The ICE for the payrollapplication may also allow a user to modify any wagetype, processingclass, rule, schema, etc., and to view the effects of changes. Inanother example, an ICE for a finance application may allow a user toconfigure parameters for general ledgers, accounts, debits, credits,etc.

Incrementally Exposing Business Application Errors Using an IntegratedDisplay

Embodiments of methods and systems consistent with the inventiondetermine errors in an application, such as a business application,modeled with an object-oriented hierarchy and expose the errors atdifferent levels in the hierarchy, for example, using an integrateddisplay.

Many computer applications, and especially large, complicated, legacybusiness applications, tend to be coded and modified in any manner thatresults in a system that works. That is, a system that produces thecorrect results or output. Over time, however, generation ofmodifications, usage changes, etc. cause inconsistencies, subtle ortransitory bugs, inefficient implementations, and a host of otherproblems to accumulate, making the application unreliable anderror-prone. For example, a developer or programmer may omit proper codeor configuration modifications for different reasons, such asperformance reasons (e.g., not creating a foreign key within thedatabase because it slows access), complexity reasons (e.g., a caseshould never occur so code is not created to handles that case), becauseof a design decision (e.g., one object is considered too unrelated toanother object so their relationship is not formally documented), orbecause of laziness or a mistake (e.g., using a function, procedure,etc., specifically designed for one environment in another environmentwhere it happens to give the correct output for the specific inputs thatthe developer is facing).

Application usage changes can also cause problems. For example, adeveloper may design an application for one purpose, and after deliveryto a customer, the customer may find a way to use it for another purposein another field. The new field of use, however, may require somelimitations that were not designed into the application. Consequently,some things may not work as intended. For example, consider a businessapplication program designed for businesses operating in the UnitedStates that is then modified for use by Canadian businesses. While itmay function correctly for most Canadian businesses, it may not functioncorrectly for certain Canadian businesses that are too dissimilar fromU.S. businesses.

As noted previously, analyzing and debugging such problems by walkingthrough the execution operations of an application can be extremelytedious, difficult, and time-consuming, especially for large, complexapplications which execute thousands, or hundreds of thousands, of linesof code, where most of the execution flow operations are unrelated tothe data object(s) associated with a problem, and especially for designor usage problems that manifest themselves intermittently or under onlyrare circumstances when executing.

Embodiments of systems and methods consistent with the invention exposeapplication errors using a hierarchical model of a business applicationprogram and indicate errors at multiple incremental levels of thehierarchy. FIG. 72 is a exemplary process for incrementally exposingerrors in an application consistent with the invention. As shown, theprocess begins by creating a hierarchical model of an application, suchas a business application (stage 7205). Details of this stage areexplained above in this specification. As described previously, in oneembodiment the hierarchical model uses OOP language constructs torepresent and enforce the data, functions, interrelationships, andhierarchy of the application objects, and this technique may beparticularly useful in the context of legacy, table-driven, businessapplications, such as, for example, those running on an SAP R/3™ system.Also as described previously, in some embodiments the entire model isupdated or recreated as a user modifies it. For example, if a userdeletes a data object or operation, which may affect many other placesin the model that used the deleted object or operation, the systemrecalculates the model based on the deletion.

Next, the process detects an error(s) in a component of the hierarchicalmodel (stage 7210). For example, as explained above, modeling a businessapplication in an object-oriented language such as Java™ enables a userto apply many different types of analysis tools and developmentenvironments to identify errors and inconsistencies within the model,independent of the actual business application being modeled. In oneembodiment, the hierarchical model of the business application is loadedinto the workspace of an integrated development environment such as theEclipse Platform, which is maintained by The Eclipse Foundation. Modernsoftware development tools can identify problems and inconsistenciesthat are very difficult to find using the original table-based code andstructures of the actual business application. As explained previously,a configuration object may be defined by analyzing the configuration ofa table-based business application and generating an object modelrepresenting the application's configuration.

For example, in an SAP R/3™ payroll business application, every dataobject (e.g., every rule, schema, wagetype, etc.) includes a countrymodifier or attribute. That is, a rule designed to be used in Brazilianpayroll calculations, e.g., to calculate Brazilian withholding tax,includes a country modifier indicating Brazil, while a similar rule tocalculate German withholding tax includes a country modifier indicatingGermany, while other rules may include a country modifier indicatingthey are applicable for all countries. In an SAP R/3™ payroll businessapplication, however, the country modifier attribute is not an enforcedattribute. That is, a rule with a country attribute designating Brazilcan be invoked and executed in a German payroll application without anyindication from an R/3™ system that this may be problematic. Similarly,a Brazilian rule may be mismarked as applicable all countries, and somedeveloper may configure a German application to use this rule because itproduces the correct result in the developer's situation. Although theseexamples are clearly application misconfigurations, the R/3™ system doesnot detect them or enforce consistency among attributes. When a usermisconfigures an application, it may work correctly for a time, butproblems often arise over time. For example, a developer configuring asystem may change a Brazilian rule to correctly implement a Braziliantax law change, but the developer may not realize that the Brazilianrule is also being used by a German payroll application. The correctBrazilian updates affect, and probably cause errors in, the Germanpayroll application that is misconfigured to also use the rule. Worse,there will be no obvious cause from the German point of view, and theGerman application may generate only intermittent errors caused by thechange. Such problems are very difficult to debug and correct.

Analysis of a hierarchical model of the payroll application, however,will reveal a Brazilian-attributed rule that is part of aGerman-attributed application as an error because the model enforcesattribute consistency among related hierarchical objects. For example,as described previously, the model may be an OOP model divided intounique configurations or projects based on top level characteristics orattributes, such as the system running the application, the client name,and the client country attribute, and the model maintains internalconsistency so that lower hierarchy level objects' attributes correspondto the top level attributes. The model recognizes attributes, knowstheir meaning, and detects an error when attributes have impropervalues. Thus, a Brazilian rule invoked by a function under a Germanproject hierarchy will be flagged as an error. As described previously,many other types of errors in addition to misconfigurations may also bedetected in the application model.

As shown in FIG. 72, the process next flags the component that wasdetermined to have an error (stage 7215). The process then proceeds upthe model hierarchy and sets an error flag in each higher levelcomponent related to the detected component (stage 7220), propagatingthe error flagging up to the top of the hierarchy. For example, an errordetected in a function may cause flagging of the function, flagging ofthe method that calls the function, flagging of the object that owns themethod, flagging of the class that the object is an instance of, andflagging of the project that owns the class. Furthermore, as describedpreviously, because the model represents an application, such as abusiness application, the errors that are detected and flagged areactually errors in the application that is being modeled, and many ofthese errors are undetectable in the environment of, and using the toolsavailable for, the application that is being modeled, such as a businessapplication on an R/3™ system.

Next, the process displays the hierarchical model with an indicator foreach error-flagged component (stage 7225). A user may utilize thisdisplay to efficiently analyze and correct the detected errors.

One of ordinary skill will recognize that stages may be added to,deleted from, or modified in the process shown in FIG. 72 withoutdeparting from the principles of the invention.

FIG. 27 is an exemplary user interface from an embodiment of a systemthat incrementally exposes business application errors consistent withthe invention. As shown, the system has detected an error 2710, namelythat “Rule 9112 cannot be resolved.” The source of the error is notimportant, and it may have been caused by any number of things. Forexample, the error may be present in the current version of the businessapplication being modeled, or a user may have deleted “Rule9112” whenworking with other objects, and when the system recalculated the modelto account for the deletion, it detected this error, and perhaps similarerrors several other places. As shown, the system flags or marks theerror in the display of “Rule9012,” which calls “Rule9112,” bydisplaying an “x in a square”

indicator symbol 2705 next to the call to “Rule9112.” Similarly, thesystem displays another error indicator symbol

2710 next to “Rule9012” in the outline view display of Payroll Rulesbecause “Rule9012” called “Rule9112” and is therefore the object aboveRule9112 in hierarchy. The system also propagates the error indicationup the hierarchy, flagging or marking the error for the objecthierarchically above “Rule9012” and displaying another error indicatorsymbol

2720 next to “Payroll Rules” in the object hierarchy display for projectUSA.ma.800. (The text “Payroll Rules” is the display representation ofthe payroll rules object in the hierarchical model of the businessapplication, and the payroll rules object is related to the rule9012object.) Similarly, the system propagates the error indication up thehierarchy further, flagging or marking the error for the objectshierarchically above “Payroll Rules,” displaying an error indicatorsymbol

2725 next to client object representation “800,” an error indicatorsymbol

2730 next to system object representation “ma,” and error indicatorsymbol

2735 next to country object representation “USA.”

By starting at the top level of the application model hierarchy, forexample at country object “USA” and traversing the hierarchy down byfollowing the error indicator symbols, a user is quickly lead to thesource of the problem with the modeled business application. Thiscontrasts with the difficulty of finding problems in the businessapplication itself using its native environment. For example, in the SAPR/3™ system, the user interfaces showed single objects, or sets ofobjects at a time, such as a list of rules, a list of functions, a listof wagetypes, etc., as shown, for example in FIGS. 32-35. These singleobject listings contain no indication or relationships to other objectsand no indications of errors in related objects that might affect theobject being viewed. In the R/3™ environment and similar businessapplication environments, there is no efficient way to positivelydetermine whether and how a change to one business object affects(including adversely affecting) other objects in the application, shortof examining every other object one screen at a time. The error-checkingprovided by the R/3™ environment is on a per-object basis. For example,as shown in FIG. 47, which is an exemplary R/3™ screen for modifying awagetype business object in a payroll business application, a user maybe able to perform error checking on the single wagetype “T512W” byactivating an error check function, e.g., by clicking a button on thescreen. Although this reveals any errors in wagetype “T512W,” it doesnot reveal errors in other wagetype objects or indicate what otherobjects to examine.

Moreover, even if a user went through the screens of all the objects inan application and activated the error checking function for each,problems could still occur. For example, one user may modify a firstobject, such as wagetype object, on a certain date and activate errorchecking for the object, showing that there are no errors after themodification; yet another user may modify a second object at a laterdate, where the second object is an object that the first object dependson, in a manner that causes an error with the first object. Systems suchas the R/3™ system will not indicate the error in the first object onthe screen used to modify the second object. A user will not be aware ofthe error caused to the first object unless he brings up the firstobject screen and activates the error checking function for the firstobject, but the system does nothing to guide him to do this. Sotypically, the error in the first object caused by the change to thesecond object will not be detected until the application is executed andproduces incorrect results because of the error.

Embodiments consistent with invention, on the other hand, employ a modelof the business application that enforces the hierarchical structure ofobjects that participate in the application, and apply processes topropagate an indication of errors up through the hierarchical structureof the application model. Thus, as shown in FIG. 27, a user maydetermine from the error indicator symbol

2735 next to country object representation “USA” that a businessapplication model under this country representation has an errorsomewhere, even if the windows showing the lower objects in thehierarchy under “USA” were not open. Moreover, the user may iterativelydrill down (for example by clicking on) each lower level objectrepresentation with an error indicator symbol to easily pinpoint theobject that is the source of the error, such as “Rule9112” 2701 in FIG.27.

Merging Business Process Configurations

As described in a previous section, one aspect consistent with theinvention is the ability to compare two models generated from twodifferent configurations or versions of a business application and findthe differences between the two models. For example, a test version of abusiness application in a lab may be configured differently from theproduction version of the business application that is employed at acustomer site. Differences in the models of the two versions of theactual business application directly correspond to differences in theversions of the actual business application. As explained previously,being able to identify differences between two or more configurations ofa business application is an important maintenance capability.

Embodiments of systems and methods consistent with the principles of theinvention expand the usefulness of a differences capability by adding amerging capability, which allows the different features from one or moreof the versions being compared to be combined or added to form a newmodel of a new version of the business application. As explainedpreviously, the new model may then be transformed into a new version ofthe business application having the same configuration characteristicsas the new model.

An efficient merging capability may greatly ease and improve maintenanceof a business application. For example, the SAP R/3™ landscaping hasthree proposed configuration systems: (1) a development system, wherethe developers can do anything they want, in order to development thenew configuration or new functionality the customer needs; (2) a testingsystem, where all certified changes from the development system may betested; and (3) a production system, where the configuration is sentwhen it passes the test requirements. The production system is what acompany uses in order to run their business application.

A consultant may wish to compare a development system of a businessapplication to a testing system, or compare a testing system to aproduction system, for example to debug a problem found in theproduction system using the testing system. If the configurations of thetwo systems are not the same, then the consultant cannot be sure whethereffects were caused by the bug or a difference in the systemconfigurations. In typical tabled-based business applications, suchcomparison would require reformatting the table-based data into textualformat, properly aligning the data, and then comparing each textual lineof data. This process is extremely time-consuming and difficult toperform correctly, especially for complex business objects havinginterrelated structures that are scattered throughout tables in theactual business application implementation. When differences are found,the consultant will want to synchronize the two systems, updating theconfiguration of one or both so that they are both the same.

Differences in the configuration of business applications running ondifferent systems may arise from many sources. For example, incrementalchanges to the same objects, code, etc. may not be completelyimplemented on, different systems. For example, if a first developerdevelops a change to a portion of the business application, such asfunction, rule, data structure, etc., on a test system for laterinstallation on a production system, and another developer modifies thesame portion based on the first developer's modifications, (e.g., toextend a rule's functions for the second developer's needs), but onlythe second developer's changes are installed in the production system,or if the second developer's changes are installed before the firstdeveloper's changes, then a problem has developed with the productionsystem. Moreover, the production system may have locally installedconfiguration changes that are not used in the test system. Consequentlythe test system will not have the same problem (as it will have thecorrect developer-change configuration), so it cannot be used to debugthe production system problem. To debug the problem, the production andtest systems must be brought into a synchronize state.

To synchronize the two systems, a user must identify what changes needto go from one system to another (e.g., from testing to production, orfrom production to testing), merge the identified parts and create a newconfiguration. This is difficult to do for a complex businessapplication, especially for a table-driven system such as the SAP R/3™system.

FIG. 74 is a flowchart of an exemplary process for merging businessapplication configurations consistent with an embodiment of theinvention. As shown, the process begins by creating a first model of afirst configuration of a business application and creating a secondmodel of a second configuration of a business application (stage 7405).Creation of a detached model of a business application is explained inprevious sections. In one embodiment, the model may be an object model,for example, expressed in terms of object-oriented software coderepresenting the configuration of the business application, but themodel is not dependent on being represented in terms of anobject-oriented programming language. For example, the model could beexpressed in a set of tables representing the business applicationconfiguration, and analyzed with a tool that handles referentialintegrity checking using the set of tables.

Next, the process compares the two business application models (stage7410). In one embodiment consistent with the invention, comparison isdone between the objects that comprise the models of the businessapplication, on an object by object basis. In one embodiment, the modelscomprise object-oriented language constructs and this functionality isimplemented using an integrated development environment, which acts asan integrated configuration environment for configuring the businessapplication. As explained previously, the data and code in the actualbusiness application may be scattered and the relations between itemsmay not be discernable. For example, in a system like the SAP R/3™system the data and code may be scattered among many tables. Gatheringthis scattered information together and modeling it as an object orother structured entity allows the process to compare one object toanother and find the differences in different aspects of these objects.

After the differences between the two models are identified, thedifferences are displayed (stage 7415). In one embodiment, the processis implemented to display corresponding portions of the two models, suchas code portions, side by side and to indicate differences between themodels with markers such as icons, different colors, bold text, etc. Inanother embodiment, the process may display an explanation of what isdifferent, for example, using a pop-up text box activated by placing acursor over the item of interest.

In another embodiment, for nonsequential data objects from the model(e.g., wagetype data objects from a model of an R/3™ payrollapplication), the process may display a textual explanation summarizingand explaining the differences between two corresponding data objectsfrom the two different configuration models being compared. Thisexplanation may include the business meaning of the object in thecontext of the business application. Side by side display for dataobjects may also be used, but nonsequential data structures typically donot adapt well to side by side comparison because they may havedifferent subordinate objects, different names for fields andattributes, etc. In one embodiment, a data object from one model may bedisplayed with an icon(s) overlayed to indicate that a particular fieldis different from the corresponding field in the object from the othermodel.

Next, the process receives a selection of one of the desiredconfiguration option from among the displayed differences (stage 7420).In one embodiment, a user chooses from among the displayed alternativesto decide which of the alternatives will be used in the merged model ofthe business application that will be produced. For example, a user maybe trying to synchronize the configurations of two systems that arerunning the business application, such as a test and development systemrunning a new configuration of the application and a production systemrunning an old configuration of the application or a production systemrunning a locally revised configuration of the business application anda test system running an unrevised, as-released configuration. As neededfor the situation, a user may select the configuration changes that needto go from one system to the other system in order to make the businessapplication equivalent on both.

In another embodiment, the selection of different configuration optionsis automated according to predetermined rules. For example, a rule mayspecify that the most recently modified object, line of code, etc. beselected, or a rule may specify that the configuration of one of themodels will be chosen for a specified set of objects, while the rest ofthe object selections will come from the other model.

After the desired configuration items among the different items areselected, the process merges the selected items to create a new model ofthe business application (stage 7425). This, in effect, creates a thirdconfiguration model which is the merged version of both of the twostarting configurations. In one embodiment, as explained in previoussections, the new model may be translated into a new version of theactual business application, and installed and run on a target system,such as a test system or production system as mentioned above.

One of ordinary will recognize that stages may be added to, deletedfrom, or modified in the process shown in FIG. 74 without departing fromthe scope of the invention. For example, the process stages may bemodified to handle three of more configuration models at a time, or thedisplay stage 7415 may be deleted for implementations where thedifference selection is automated. One of ordinary skill will alsorecognize that the processes described in this specification may beimplemented with the assistance of an ICE or IDE loaded with thebusiness application models, which provide functions to assist a user inviewing, managing, and modifying the models and their elements, forexample, object-oriented language elements.

FIG. 67 displays an exemplary user interface that may be used to analyzeand select differences between objects in two models, for example, suchas might be used during stages 7415 and 7420 of FIG. 74. In theembodiment shown, an interactive window 6705, such as an interactivebrowser window that is part of an ICE, displays a portion of two modelsof two different configurations of a business application. The businessapplication model on the left is entitled.“Current—USA.v46.000.20051209”6710 and the model on the right is entitled “Main—USA.rvc.800.20051209”6720. Under the two model titles are displayed two different versions ofa rule object “UWH2—Determine actual worked hours (non-basic)” 6725 fromthe two different business application models. As shown, thecorresponding portions of rule object “UWH2” are shown side by side, andthe display has highlighted the lines that are different 6730 betweenthe two configurations.

In another embodiment, items on the display may be associated with anicon that indicates that a particular item, such as an object field orattribute, is different from the one it is being compared to. Suchembodiments may allow a user to compare the items, and select one bymanipulating the icon. In another embodiment, the differences may bedisplayed using markers next to a difference and pop-up text boxesexplaining the difference. For example, for some data objects such as awagetype in an R/3™ payroll application, the data structure may havedifferences in the data fields, or sub-objects that may havedifferences. One object may be displayed along with a summary of thedifferences between the object and another object, such as a textualexplanation of what the differences are.

Using a display such as is shown in FIG. 67, a user may analyze thedifferences between models of business applications, choose one model,or the portions of each model, desired, and merge the models to create anew model, which may in turn be transformed into a new version of thebusiness application.

Conclusion

Accordingly, as disclosed, systems and methods are provided foranalyzing a business application's data, operations, and relationshipsand creating a corresponding model, such as an object orientedprogramming (OOP) object model, comprising OOP objects, functions, andoperators corresponding to the business application entities, andvarious uses involving the model for improving the business application.The foregoing description of possible implementations consistent withthe present invention does not represent a comprehensive list of allsuch implementations or all variations of the implementations described.The description of only some implementations should not be construed asan intent to exclude other implementations. One of ordinary skill in theart will understand how to implement the invention in the appendedclaims in may other ways, using equivalents and alternatives that do notdepart from the scope of the following claims.

The systems and methods disclosed herein may be embodied in variousforms including, for example, a data processor, such as a computer thatalso includes a database. Moreover, the above-noted features and otheraspects and principles of the present invention may be implemented invarious environments. Such environments and related applications may bespecially constructed for performing the various processes andoperations according to the invention or they may include ageneral-purpose computer or computing platform selectively activated orreconfigured by code to provide the necessary functionality. Theprocesses disclosed herein are not inherently related to any particularcomputer or other apparatus, and may be implemented by a suitablecombination of hardware, software, and/or firmware. For example, variousgeneral-purpose machines may be used with programs written in accordancewith teachings of the invention, or it may be more convenient toconstruct a specialized apparatus or system to perform the requiredmethods and techniques.

Systems and methods consistent with the present invention also includecomputer readable media that include program instruction or code forperforming various computer-implemented operations based on the methodsand processes of the invention. The media and program instructions maybe those specially designed and constructed for the purposes of theinvention, or they may be of the kind well known and available to thosehaving skill in the computer software arts. Examples of programinstructions include, for example, machine code, such as produced by acompiler, and files containing a high level code that can be executed bythe computer using an interpreter.

1. A method of presenting business application execution information,comprising: executing a business application; creating an execution logcontaining information regarding operations and data of the businessapplication in execution sequence order; identifying a set of objectsused by the business application by matching the information regardingthe operations and data of the business application with predefinedobjects that model the set of objects used in the business application;organizing the information in the execution log according to the set ofobjects; presenting the organized information according to the set ofobjects; and assigning an indicator to a log entry from a plurality oflog entries signifying how the log entry affected an object in the setof objects.
 2. The method of claim 1, wherein organizing furthercomprises: associating each entry in the execution log with an objectthat the entry affected during execution of the business application. 3.The method of claim 1, wherein presenting further comprises: creating ahierarchical display having the set of objects as top level nodes of thehierarchy and the organized information in the execution log assub-nodes of the top level nodes.
 4. The method of claim 3, wherein thesub-nodes are arranged in chronological order of execution.
 5. Themethod of claim 1, wherein the information from the execution logregarding the operations and data of the business application comprisesthe plurality of log entries, and where presenting further comprises:displaying a representation of the assigned indicator with arepresentation of the log entry.
 6. A method of organizing a pluralityof entries regarding a plurality of operations of a business applicationduring execution, comprising: recording an execution log containing theplurality of entries in execution order, wherein an entry of theplurality of entries contains information regarding an operation of theplurality of operations, and wherein the information indicates an objectaffected by the operation; reorganizing the recorded execution log suchthat the entry containing information regarding the operation isassociated with a category corresponding to the object; displaying arepresentation of the category corresponding to the object; displaying arepresentation of the entry containing the information regarding theoperation associated with the category so as to visually associate therepresentation of the entry with the representation of the category;assigning an indicator to the entry containing the information regardingthe operation based on how the operation affected the object; anddisplaying a representation of the assigned indicator so as to visuallyassociate the representation of the assigned indicator with therepresentation of the entry.
 7. The method of claim 6, wherein thecategory corresponding to the object is an object class.
 8. The methodof claim 6, further comprising: displaying a representation of a secondentry containing information regarding the operation associated with thecategory so as to visually associate the representation of the secondentry with the representation of the category.
 9. The method of claim 8,wherein the representation of the entry and the representation of thesecond entry are displayed in execution order.
 10. The method of claim6, further comprising: displaying the representation of the categorycorresponding to the object among a plurality of representations ofcategories corresponding to a plurality of objects according to acategory identifier provided by a user.
 11. The method of claim 6,wherein the assigned indicator indicates whether the entry modified theobject.
 12. The method of claim 6, wherein displaying the representationof the entry containing the information regarding the operationassociated with the category further comprises: displaying a valueassociated with the object before the operation executed; and displayinga second value associated with the object after the operation executed.13. The method of claim 6, further comprising: sorting a plurality ofobject-oriented elements according to a chronological order of theplurality of operations.
 14. A system, comprising: a processor forexecuting instructions stored on a computer-readable medium to perform amethod of organizing a plurality of entries regarding a plurality ofoperations of a business application during execution, the methodcomprising: recording an execution log containing the plurality ofentries in execution order, wherein an entry of the plurality of entriescontains information regarding an operation of the plurality ofoperations, and wherein the information indicates an object affected bythe operation; reorganizing the recorded execution log such that theentry containing the information regarding the operation is associatedwith a category corresponding to the object; displaying a representationof the category corresponding to the object; displaying a representationof the entry containing the information regarding the operationassociated with the category so as to visually associate therepresentation of the entry with the representation of the category;assigning an indicator to the entry containing the information regardingthe operation based on how the operation affected the object; anddisplaying a representation of the assigned indicator so as to visuallyassociate the representation of the assigned indicator with therepresentation of the entry.
 15. The system of claim 14, wherein thecategory corresponding to the object is an object class.
 16. The systemof claim 14, wherein the method further comprises: displaying arepresentation of a second entry containing information regarding theoperation associated with the category so as to visually associate therepresentation of the second entry with the representation of thecategory.
 17. The system of claim 16, wherein the representation of theentry and the representation of the second entry are displayed inexecution order.